One tip I would have for the OP is to not make the editor in C, unless you plan to ship the editor with the game. I'd suggest using a quicker-to-change language like C# or Java. I mostly have experience with C#, and this language come with a huge amount of built in functionality such as FileChangeWatchers, loading and saving bitmaps, etc. Writing a somewhat working map editor in C# is a matter of a few days, and then you can save it out to your own format instead of relying on png's as your map data.
The reason I would use my own level format is that most likely you will want to store more than just an index into a tileset for your maps, and that's where png's become harder to manage. For example, the robots in N have quite a few parameters that dictate their initial direction, their 'program' they use for their movement, etc. I'd hate to edit that in a png somehow..
Cheers,
Nick