TileMap object has a number of expressions to convert tile coordinates to screen coordinates and vice-versa.
PositionToTileX(x)
PositionToTileY(y)
SnapX(x)
SnapY(y)
TileToPositionX(x)
TileToPositionY(y)
Use TileAt(x,y) to get tile ID.
As for your second question, it depends on your game. If this is just for storing customizable properties for individual tiles, I would probably use an array or dictionary. If you need to add animations, behaviors etc. to your tiles, you will need to replace them with sprites. (or put sprites on top of them)
> I have an event set up so when I click the tilemap in an editor window (separate layer, paralax 0,0), but it selects tile id -1 instead of the tile I clicked on. I'm assuming it's not translating the mouse coordinates to the editor tilemap because of the parallax (the tilemap technically isn't moving)..
>
Not sure I understand.. You may need to add scrollx, scrolly to your mouse coordinates. And probably subtract WindowWidth/2, WindowHeight/2. It's hard to tell without seeing your capx.
Sorry I'm late, it's been a long week. Anyhow, here is what I'm using to select tiles and place them.
tile selector is the tileset the user clicks to choose which block they are placing down. world 1 is the tileset where the user draws the level. the tile selector is on layer 5, which has a parallax of 0,0 (so it remains on screen while the user scrolls around the layout).