all past points are very good but one thing i instantly thought is and i know this may sound strange but bare with me if you haven't programmed be for don't jump straight into c++ for the one reason of most ide's i have come across don't show errors very well to a novice when you be come more proficient with programming and the c syntax then c++ ide's start to make seance when they throw weird errors e.g. linker errors.
a programming language i would maybe start on to get the bare bones basics of programming is something like c# this will still get you to understand the c syntax but in a smother way so i would recommend learning how to make variables, loops, outputting and conditional statements like "if(){}else{}" and "switch(){ case }" and then when you can easily build console apps in things like c# then move to c++. You would have to relearn slight bits but the core concepts will be the same between languages.
then when you get proficient at building programmes or mini console based games (which can still be graphical, think ascii art) then moving to ether a basic 2d graphical game with the windows form api or the likes of a 3d game engine like unity or some other game engine from there if you wanted you could start building your own engine.
but you need to remember you don't even need a game engine to make a game, but it will help you to think of how to start a 3d game without one when you have seen how you use a game engine .