It is really important to install Mono on Windows, in many cases. It depends on what do you expect from Mono. One of such cases is when you want to do the CLI development, and develop code in more then one platform, including Windows, with Windows being your primary development platform.
In principle, you could do it using only .NET on Windows (with Visual Studio or not), test it on Window, and then test it on some other platform(s).
You don't need to recompile your assemblies made on Windows. Ideally, it can work and often words. In real cases, it may cause problems. The reason is simple: Mono is not 100% compatible; and it is not even supposed to be 100% compatible, even though the compatibility if very good in many cases. For example, WPF and other parts of .NET FCL were never developed for Mono. BCL is supposed to be fully compatible, as well as a number of some non-standard parts of FCL, such as
System.Windows.Forms
(yes, these assemblies are not part of the ECMA standard for the environment). However, there are some incompatible pieces, especially in FCL which is not part of BCL. I even remember one case where people reported a bit of .NET behavior as a bug, which was fixed in Mono, which is a kind of incompatibility (;-)). And I saw some implementation bugs in Mono, which I did not find in .NET, so I had to apply some work-around solutions.
Due to these incompatibilities, one of the effective methods of work on Windows would be using both .NET and Mono. The two runtime environments are fully isolated, because you run applications in different ways:
:: for .NET for Windows:
someApplication.exe
:: for Mono on all platforms:
mono someApplication.exe
Here is what you can do: develop some code on Windows, test it on .NET for Windows, and then re-test it on Mono for Windows. After this last step, the behavior of your code on Mono for Windows will be maximally close to the expected behavior on Mono on other platforms, but only if other products your product depends on are also installed on both platforms, in the same or compatible versions.
—SA