The first question that comes to mind before one starts game programming is, which programming language to use. Although the game logic is remains more-or-less the same no matter what language you use, the game’s interface, your own productivity and the game’s platform independence may all depend greatly on your choice of the programming language. For now, I’ll stick with C++.
I recommend using the Code::Blocks IDE or the MS Visual Studio / MS Visual C++ Express IDE for development. It’s not really necessary to use an IDE, you could do just as well with a programmer’s editor such as Notepad++ or Geany, but IDEs make life a lot easier.
Although you won’t need to draw sprites for a few chapters but since we’re talking about tools, I use Paint .NET and GIMP together with the good ol’ MS Paint for drawing backgrounds, tiles and sprites.