Extra Credits and Egoraptor's Sequelitis are videos about game theory. Real good sources.
For the actual development bit, look into C++ and XNA programming. I'd advise you to stay away from "make your own game" type programs, since they're often gimped and it shows when you try to popularize or monetize your game.
There is this great webseries called Extra Credits that explains some fundamentals of game design(and Gaming in general), which could help him out in the projects he works on. also there is a forum for the series full of peeps who could ya out as well.
If he wants to develop his own games, he needs to learn to develop software in general. That's enough of a task to worry about for quite a while so I'd suggest just focusing on that. Avoid any "game specific" programming lessons, books, tutorials, whatever. Just learn to write good, solid, software. He should remember that there is a lot more to programming than just knowing a language, and a lot more to software development than just programming.
Once that's out of the way, he'll be in a position where he can learn the specifics of game programming, which are important and do need to be covered, but shouldn't really be approached without a platform of programming and development ability to build on. Learning to use OpenGL isn't going to be much use if you don't know how to design the overall architecture of the game, or how to use basic development tools like a debugger.
It kind of depends on the scope of what he wants to do. I taught myself how to make any number of relatively simple 2D games with a 10 dollar book and the internet. Obviously fancier and/or more specialized stuff is more expensive.
I would put it out there that I think, with the number of internet resources out there, most people can learn the basics of a programming language with a book or two and a whole bunch of hard work.