If you want to learn the principles from scratch:
http://gafferongames.com/ teaches physics
Then learn OpenGL, using your favorite programming language (Java and C/C++ are the most popular and will have the most learning resources, but generally the opengl libraries for every language are pretty similar so you can translate them. Also i've heard python opengl sucks.) OpenGL is pretty bare-bones, so you'll end up essentially writing your own engines. Then make games, start simple, with like asteroids or pong or something. In fact, it might be worthwhile to go through the history of video games, just making clones of various things (even if they aren't full-fledged games, write the engine for them).
What I mean is start out with pong or asteroids then move into more complicated arcade games then make like a platformer, a more complicated strategy game, maybe an RPG, then get into 3D.
It helps to have some basic knowledge of linear algebra, so like understand what a matrix is, what a basis is, how matrices map onto operators, etc. There are good linear algebra courses online, like MIT OpenCourseware has a great one with lecture videos.