Ответ на номер 1: MonoDevelop . Также поставляется с Mono , версией .NET, которая не зависит от платформы. Это необходимо использовать, когда вы делаете этот переход. Он также работает в Windows, что делает процесс обучения менее крутым.
Ответ на вопрос № 2 таков: я не знаю ... но запуск вашей программы, скомпилированной для Mono, должен дать вам четкое представление о проблемах, специфичных для вашей платформы, в вашем коде.
Ответ на вопрос № 3: попробуйте это как конкретный вопрос, который даст этому довольно сложному вопросу должное внимание и поддержку.
Ответ на вопрос №: используйте автоматическую сборку (NAnt или аналогичную) для автоматической сборки кода для нескольких целевых платформ. Однако возможно, что ваш .NET-код работает без изменений для любой платформы (в идеале это должно быть), и только ваша часть C ++ требует особого внимания.