So, what's the story if I want to build a C# application that runs on Windows, OS X, and Linux? Do I use "regular" .NET for Windows and Mono for OS X and Linux? Or will everything eventually be unified into one common platform?
It can be complicated, but if you want to see an example, you can look at MonoGame samples [1]
The simple platformer has one source, but you should be able to compile it with Mono on Linux/OSX/Win or with Visual studio after you do the setup.
With Xamarin in the mix, your build targets can include Android and iOS.
Most of the time when I built with mono on linux, I was able to run the binary on windows, but I was creating smallish projects so far, so I don't know how well that works for larger projects.
But with libraries, there are often built in such way, that you have shared interface, that will be usable no matter the target and during compilation the correct platform version would be linked, but my memory is kind-of hazy on the details.
Basically write in whatever is comfortable, they both run the same format binaries. Some .Net features are not available in Mono (yet). Other than that, the two seem fairly interchangeable