Несколько разные вещи.
MEF - это динамическое обнаружение dll для функциональности типа «подключаемый модуль».
https://www.codeproject.com/Articles/188054/An-Introduction-to-Managed-Extensibility-Framework
Вы обычно не используете это для внедрения зависимости, хотя теоретически это возможно.
Castle Windsor - это внедрение зависимостей, которое, в свою очередь, связано с разделением вашего кода. Распространенный сценарий, в котором вы хотите, чтобы DI предоставлял макеты для автоматического тестирования, чтобы вы могли отключить (быстрый и предсказуемый) макет в наборе классов памяти для (медленного и, вероятно, изменяющегося) слоя базы данных.
Оба полезны, просто по-разному.