Hola:
Un poco, a grandes rasgos y quizás con alguna imprecisión, te cuento:
La tecnología .net se basa en lo mismo que java. Con .net tu haces tu código (en alguno de los lenguajes que define la plataforma .net, como C#, basic o C++) y lo compilas. El código ejecutable corre en cualquier plataforma, siempre y cuando se instale en esa plataforma el equivalente a la máquina virtual de java (no recuerdo como se llama en el caso de .net).
El problema es que microsoft (los de .net) andan un poco peleados con linux, por lo que no han hecho esa máquina virtual para linux. El resultado es que los programas .net puede correrse en cualquier lado (windows, mac), menos en linux.
La gente del software libre decidieron hacer esta máquina virtual para linux y ese es el proyecto mono. Un algo para linux que permita correr y desarrollar los programas en .net. Este proyecto es totalemente independiente de microsoft.
Se bueno.