pour tes 3 questions, la réponse est oui :
Un programme C#, tout comme un programme VB.NET a besoin du .NET framework pour s´exécuter.
Mais en plus de ces deux langages, Visual Studio comporte aussi Visual C++. Là, tu trois possibilité : ou bien créé des exécutables natif qui n´utilise pas du tout le framework.net, ou bien faire du C++ .NET c´est à dire du C++ mais qui peut appeler les fonction du framework, ça génère du code natif, mais avec énormément d´appel à des DLL du framework (et donc il le faut), ou bien faire du C++/CLI (lire C++ over CLI) qui permet la même chose que le cas précédent, mais le résultat donne du code IL c´est à dire du code compilé en temps réel par le framework, et non pas du code natif.