Обе являются реализациями стандарта .NET, но имеют разные детали реализации. Mono исторически выросла из-за необходимости кросс-платформенной реализации .NET, которая работает везде.Позже Mono стал основой для Xamarin.
.NET Core предназначен для кроссплатформенных, масштабируемых облачных сценариев и основной рабочей нагрузкой является ASP.NET Core это работает на нем.Это правда, что оба схожи в поверхностных и кроссплатформенных возможностях API, но они были созданы с учетом других требований.
Обе реализации фреймворка хорошо поддерживаются.В зависимости от того, что вам нужно сделать, вы выбираете один из них:
.NET Core
- ASP.NET Core (веб-приложения)
- Настольные приложения WPF, WF (только .NET Core 3.0 и Windows)
- Консольные приложения
Моно
- Игры(с Unity)
- Консольные приложения
- Настольные приложения (например, GTK #, кроссплатформенные)
- Мобильные приложения (Android, iOS)