Мой опыт с 2011 года, но я уверен, что вам придется экспериментировать, чтобы увидеть работы, а что нет - это мой опыт работы с Mono.
Большинство ваших вопросов чрезвычайно обширны, и я думаю, что ваш вопрос скоро будет закрыт.
Что касается вашего последнего вопроса, это был способ, которым я это сделал, и он работал (развивается в VS-> deploy to Linux), но вы должны знать, что:
- только потому, чтоваш код будет работать в отладчике VS, это не значит, что он будет работать при развертывании;
- нет однозначного отображения между Mono и .Net.Даже когда вещи работают, это не значит, что они будут работать одинаково.Например, реализация кода шифрования, используемого для файлов cookie http, сильно отличалась между моно и .net.