I'd say that Microsoft's goal is to get as many people using .Net/C# as possible, in the hope that they'll write Windows applications.
If anything, Mono probably helps here because it reduces the problems of using a single supplier platform. If they were seen to be cutting off customers' exit strategies (without something like Mono, customers would need to change language as well as replace Windows-specific API usage), then it would greatly diminish the appeal of the platform.
As for the shared source release, I don't really know what their reasons were. Perhaps their aim was to get people to use it as a base for research at universities.
Now if we put aside Microsoft's motivations and consider Linux application development (as you see in F-Spot, Tomboy, etc), you're using the core CLR APIs that Microsoft has promised not to assert patents on and non-Microsoft APIs (e.g. GTK and Mono/UNIX-specific APIs). You are pretty much as safe as you'd be using any other framework.
It isn't one that I'm using for development personally, but I don't really have a problem with other people using it or using applications built on top of it.