Several game programming books are actually graphics books, and they are often focused on 3D instead of 2D. This is because the young market wants 3D because it's modern. Personally, my bias is beginners just need to know how to make Pong, not a 3D race car game or a MMORPG. Simple 2D games teach a lot! And it's manageable. There's only a handful that is focused on 2D for beginners. These are what I recommend for 2d game programming:
Tricks of the Windows Game Programming Gurus, 2nd edition, by Andre' LaMothe.
- Covers Windows programming (still very relevant), DirectX (this is largely outdated, but it's one of the few graphics books focused on 2D, and you can apply it to newer APIs -- see the book below. I converted his graphics code into OpenGL in the past, for example. In addition, there's AI, physics (in 2D!), sprite animation, etc. The author's writing style and personality is different and not liked by some, and writes in a C style in C++ to keep it easy for the reader to follow along, but after knowing him for several years, he's one of the most brilliant game programming authors out there. These days, he develops and teaches hobbyists of making video game consoles (XGameStation, etc.), embedded systems and robotics which is way beyond me (http://www.ic0nstrux.com/). Many popular developers started because of his books (Call of Duty, etc.).
Data Structures for Game Programmers by GameDev's Ron Penton, Series Editor: Andre' LaMothe.
- Covers data structures you'll need in 2D and beyond (and it's more than what the STL library provides), 2D graphics with SDL, common algorithms, etc. All written in C++ classes. Optimizing it depends on your skills, but you would most likely use the STL after learning how the data structures work underneath and learning how to appropriately apply them.
Really, those two big book tomes are what you need. You'll be far ahead than anything else in the book market.
Hope that helps!