And very important: Don't begin directly with huge projects. Otherwise they are doomed to fail.
Before you have a realistic chance to master such a big project, you need to gather a lot of experience. You do this by reading books (especially about modern C++, but also on game development) on one side and on writing several smaller projects on the other side. Start with small games, but actually finish them. This may also be helpful if you search a team for a later development: You have some proof that you have the skill and motivation to finish a project.
And don't underestimate the importance of good C++ knowledge. By "good", I mean you know concepts like RAII, type erasure, functionals or templates. You understand why new/delete should be reduced to a minimum, and how STL components (containers, iterators, algorithms) interact with each other. How to decide between static and dynamic polymorphism. What other possibilities of abstractions exist in C++. Why you should avoid global variables where possible. And so on... The reason why this knowledge is crucial, even if advanced, is because it determines your everyday programming. You write code in a completely different way if you do not understand those topics -- usually, code is more complex and error-prone, harder to maintain and less efficient. You will see how much more fun it makes to maintain a project with a well-designed code base (and also how completely frustrating it is to spend days of debugging because of bad code).
Also be aware that programming is only one part of game development. Graphics, audio, artificial intelligence, physics become also important in complex games. Even more, it pays to have a team when developing bigger games.