I recommend that you start with a simple C(++) 2D Library for your game design. I recommend using SFML, a new and fast Library for coding C++ games. If you want to go old-school, then use SDL or Allegro. I started on SFML with simple physics and tile-based games and am working on a Side-Scroller now. If you want more independence but a bigger challenge then I recommend the Windows API for writing games, a C and C++ built-in Header Library for designing GUI's and Games. If you want a HUGE challenge, then start with the 3D rendering engine OGRE. But I will warn you, OGRE is VERY Frustrating, especially to a beginner. Finally, you may just want to build on another engine, which is fine, but can be difficult but frustrating.
Start with building on other engines. For instance, to make a basic 2D engine, you might want to start by building on Box2D to be able to use images and colors, and as you get more skilled, use less and less of Box 2D and add more and more features until you have created your own (2D) engine/library.