1. I need a language that gives me a solid foundation of programming and doesn't give me any bad habits when migrating to harder languages such as C++.
Start with c++ if that is your goal. The idea of learning on language to learn another is a bit of a waste of time and a bit of a round about.
Nothing wrong with c# though. Visual studio is a great ide, c# is not closer to c++ simply because it has c in its name. It is closer than python though.