С точки зрения разработчика:
Преимущества Mono (равно как и .NET, и любой другой виртуальной машины: Java, Perl, PHP и т.д.): Mono представляет собой виртуальную машину + готовый набор классов. Сама машина написана на C/C++ ( откомпилирована в машинный код), классы - на C/C++ (откомпилированы в машинный код) и С# (откомпилированы в байт-код). Разработчик пишет код на любом языке, который поддерживает виртуальная машина Mono, благо, их много, и не заморачивается. Разработчику в большинстве случаев не нужно знать основы операционной системы, системные вызовы, реализацию сетевых протоколов и т.д. За него всё сделает виртуальная машина.
Разработчику достаточно знать объектную модель фреймворка. Ему дали инструментарий, он его один раз освоил и просто отслеживает, что появляется в новых версиях. Он пишет свои классы на основе существующих, применяет их в своих прикладных приложениях и счастлив. Скорость разработки возрастает в разы, а общая культура программирования падает. Так рождаются т.н. быдло-кодеры (не путать с врачами-психиатрами, которые кодируют быдло от алкогольной зависимости). Я бы назвал такое программирование программированием сверх-высокого уровня, когда разработчик не знает ничего, кроме своей виртуальной машины.
Таким образом, выделяются две категории (или, точнее, касты) разработчиков: одни пишут саму виртуальную машину, и знают, как она реализована, как взаимодействует с операционной системой; другие - те, кто пишет прикладной софт, исполняемый этой машиной. Они в большинстве своём (дальше - больше, всякие школьники и пионеры, etc.) не знают ничего, кроме фреймворка, а может, и его толком не знают. Первые - ведущие, вторые - ведомые.
Майкрософт это положение вещей всячески поощряет, и, в общем-то, логично: система проприетарная, рядовые программеры знают каждый свой кусок, менеджеры проектов видят общую картину, а остальная масса т.н. прикладных программистов просто юзает .NET и не парится. Зачем-то ещё LINQ придумали. Я подозреваю, чтобы всякие там пионеры с младых ногтей юзали LINQ и не знали, что есть ещё и такой язык SQL, иными словами, это ради маркетинга, а не технологии (это моё личное мнение).
Что же касается Monо, Perl, PHP, Java и.т.д.: это свободные/открытые платформы, реализация ни от кого не укрыта, бери исходники и изучай. Не хочешь быть ведомым - становись ведущим.
Из википедии про Mono: "Принятая в проекте лицензия на компилятор и другие программы - GNU GPL. Лицензия на среду исполнения и другие библиотеки - GNU LGPL. Лицензия на библиотеки классов - X11 License."
По моему ИМХУ, за виртуальными машинами будущее. Хорошо это или плохо - другой вопрос.
Я не удивлюсь, что когда-нибудь настанет момент, и операционные системы будут представлять собой туеву хучу откомпилированного байт-кода, управляемого здоровой неповоротливой виртуальной машиной, а на ней будет навешано ещё с десяток виртуальных машин поменьше, а для некоторых из них напишут ещё совсем маленькие виртуальные машины, на которых будет лабать многомиллиардная толпа пионеров. Вот тогда-то и настанет всему конец...