Mono no Ubuntu é quase o mesmo que o .NET no MS Windows. As diferenças são quando você deseja que as funções da API do Windows não existam no Ubuntu. Caso contrário, deve funcionar. A Microsoft suporta o desenvolvimento Mono. Eu acho que você sempre pode encontrar algumas funcionalidades que não funcionam em mono, mas em geral não deve haver nenhum problema. Tenha cuidado para não usar a API do Win e você deve estar bem.
Eu estava desenvolvendo alguns programas com o MonoDevelop usando C # e mono e quando eu criei um arquivo exe, ele funcionava inalterado no Windows e vice-versa. Mesmo a comunicação remota e inter-processual funcionou de imediato.
Leia isto: link