Great book if you've already read begining game programming 2nd edition. It goes into more advanced topics compared to the first book, and gives you some better structure to get your games developed quicker, with reusable code.
The book even includes a surprise bonus- a chapter on adding some 3d models and different types of rendering to your 2d games!! One great reason for this is that 2d is 3d in directX- looking straight down at the 2d plane. DirectDraw was taken out years ago, and many books don't explain this as well as this one.
The game takes you through developing a complete 2d engine with audio, input, animation and scripting! Using the engine you should have a much easier, and quicker time creating 2d games, since all the basic stuff is done in the engine.
I would definitely recommend this to someone trying to learn better techniques after learning the basics from the first book(or web). Since most people want to go 3d as well, he does include code to import 3d models, set up camera and lighting, so you could use this as a starting point to develop further in 3d, or just add some 3d effects into your 2d game.
Author doesn't spend much time horsing around with a lot of code, but explains the new stuff as it is added. He also has his own forum which is very helpful- And as is normal for a forum, research your questions first.
Great book to be able to re-use code and develop games quicker if you haven't built many/any engines before!
Since there is no Table of contents listed here, here it is:
1. Building a 2D game Engine
2. 3D rendering
3. 2d Rendering
12. Scripting (using Lua)