Первый C # не является «производным» от .NET. .NET - это не язык, это платформа приложений и библиотека классов, основанная на CLR, для которой существует несколько языков.
Тем не менее, наиболее веская причина для использования .NET в том, что это хорошо спроектированная библиотека классов и гораздо более простой способ разработки для Windows, чем Win32 или MFC. Однако я лично решил, что лучше изучать новый язык в целом, чем изучать расширения для старого, и, поскольку C # изначально разрабатывался для работы с .NET, я полагаю, что это предпочтительный язык для .NET.
C ++ / CLI полезен, если вы хотите использовать .NET с некоторым устаревшим кодом, и я использовал его для создания графических интерфейсов Windows Forms и склеивания их с существующим кодом приложения. Другой смысл raison d'etre заключается в том, что это единственный язык .NET, который поддерживает смешанный управляемый и собственный код в одном модуле загрузки, поэтому он хорош как для производительности, так и для повторного использования устаревшего кода.
Что касается количества языков, Microsoft хочет, чтобы каждое приложение Windows было основано на .NET, потому что это лучше для безопасности и стабильности их ОС. Единственный способ, которым это произойдет, - поддержка нескольких языков. Думайте о .NET как о прикладной платформе или OS API, и тогда этот вопрос будет иметь меньше смысла; для .NET будет много языков по той же причине, что и для любой платформы. Этих причин много, в том числе коммерческое преимущество, подгонка приложений, политика, поддержка существующих разработчиков, выбор и, несомненно, больше.