One thing to add on is that no matter what rode you take, go in small steps. If you already have a great game idea, I'd reccomend not starting with it. You want to get to figure out the right path (from the great information above, or any other that you decide), and work on learning a bit first. Once you've got a good understanding, and maybe a couple really simple games done and polished (like Tetris and/or Breakout clones) then start in on that first original game.
By starting on something like Tetris, you can learn how to create a game without having to worry about coming up with any of the specifics yourself.
There's a great article on gameDev about this progressive approach, here. Your own path might be different, depending on if you start programming from scratch, or start with a higher level. Regardless, the basic principles still hold.
Your question is a bit open ended so hard to answer, especially as there are so many different ways to answer it. The best (although generic) answer is to find a way to learn it while keeping yourself motivated. That in itself can be a big challenge.
With that in mind, I'd reccomend taking a look at the C++ workshop that was run here. While the actual workshop itself was conducted some time ago, all of the material is still here on Gamedev and still relevant.
You can find the forum section for it here, and there introduction is here
It does require a text be purchased, but on Amazon you can get it for less then $10 used, or for $20 on Kindle.
I didn't take the C++ workshop, but I did do a large percentage of the C# workshop, which looked to mirror it with regard to the projects, etc.
Is this the best first step? Maybe not. But I don't think it's a bad one.