AFAIK there are multiple options for you to make life easier. If your game is tile based you could store your maps as 2D arrays using ASCII characters for different tiles, then read through the array to build the world on level load.
You can store such an array as a notepad text file and read that in.
I have heard of some people using Excel sheets to make their levels in; I don't personally know how but I'm sure that information is a short Google ride away.
Or, most conveniently there are many tile editor programs out there, such as Tile Studio. That link helpfully also links to some other editors at the bottom of the page, like Mappy.
One method I tried is to use a .bmp with the level data painted on to it. Black = solid, white = clear, then different colours for any other items/objects you need, e.g. red = enemy, blue = health, etc. Then read that bitmap object pixel by pixel and build the level world from the data.
Some games use XML format to store levels in.
If your levels are not tile based, you could still use one of those methods if you can live with the objects being in grid formations. There are solutions for non-grid games, of course, I just don't know of any tools that can help; I only know of developers who have written their own level editors.
Is this the sort of information you were looking for?
http://pyxeledit.com/ , http://www.aseprite.org/ and http://tilestudio.sourceforge.net/ are some nice tools for pixel art. You can do the art itself in most graphics programs as long as you stay away from soft brushes and use strict color palette, but these programs have some tools for nicer tile and animation editing/previewing that come in handy.
Hey! 2D games are fun! You want to use programmer art to placehold until you get your game going enough to allow for real artists to step in.
Take a look at TileStudio. This is an interesting program which lets you work on 2d levels and then export to an output you can use in your program. It also lets you put things in like platforms and other collision shapes.
These mean nothing at all unless you code them into your game, but I allowed in one engine support for 128x128 textures even though I was spitting out 16x16 tiles from TileStudio and building collision shapes using Box2D.
A complete game from scratch usually requires what amounts to a comic book/graphic novel. You have to have a story, or you are just making a boredom grinder.
Make sure you realize that just because it's a 2D game doesn't mean 3D isn't involved. You have backgrounds and parallax scrolling and other things going on. There could be boss battles where only the hands can be hit but the boss still moves around. When you start considering the layers of your 2d game also consider the direction of sound and other stuff.
Usually you want mechanics first, then graphics. Civ5 is a 3d game with a 2d mode. Much, if not all of the game could be crappy 2d graphics modified later into 3d if you exposed the paint functions in a way which allowed for that.
I could go on. Have fun with it!
The option of hand-rolling your own is always on the table.
The pro is that you can add in all and any features you want, and handle weird edge cases or exceptions exactly the way you want. You can also either make your own level editor (hard) or shanghai an existing program (like Tile Studio) and parse the output however you want.
The con is that obviously it will be a little more time-consuming.