Как совместить 2 языка С++ и C#?
2. Писать на С++/CLI. Только тут я не понимаю, как их совместить. 
Ну написал я код на С++/CLI, а как мне его в проект , написанный на С# вставить ?
Этот вариант неплохо разжеван в этих двух вопросах.
Можно ли совместить в одном проекте программы написанные на разных языках (C++, C#) в VS2012?
Как динамически подключать библиотеки?
Этот вариант на деле оказался самым удачным, потому что деление проекта на три части (C++; CLI; C#) так же строго делит и области ответственности. На стороне C# остается только интерфейс, на стороне CLI - только связь с низким уровнем, на стороне C++ - только низкий уровень.
Целостность кода сохраняется, библиотеку низкого уровня можно с равной легкостью подключить как к библиотеке CLI, так и к другому низкоуровневому проекту.
Если вы в будущем хотите библиотеку использовать в других проектах, не привязаных с .NET, то вариант 1.
MFC это для GUI, отношения к COM мало имеет.
COM используется до большой модульности приложения. Для этого COM библиотека регистрируется в реестре windows, это вам нужно?
Также в .NET есть проблема работы с COM при наследовании интерфейсов.