.Net is a runtime environment, it defines a sort of "virtual" computer platform that runs on top of a host operating system. The .Net framework refers to this runtime, plus the standard .Net core libraries. This is why the same .Net application can run run on Windows, Linux, and Mac -- just as long as the developer has chosen libraries that are available on all of those platforms. In Java, the Java Virtual Machine is equivilent to the .Net runtime, and there is a standard set of Java libraries as well. This description simplifies things a bit, but its sufficient for this discussion.
Mono is an open-source implementation of the .Net runtime and .Net framework which runs on Windows, Linux, Mac, etc. MonoGame is an open-source implementation of the XNA framework that also runs on Windows, Linux, and Mac. Thus, if you program for Mono and MonoGame, your apps will run on Windows, Linux, Mac, etc, with the same code -- in some cases you might have to, or want to, write a little platform-specific code to work around issues or to take advantage of platform-specific features, but otherwise your code should just work on any of the platforms that mono and monogame support.
Mono differs slightly from the .net runtime/framework in that it lags a bit behind Microsoft's official .Net runtime; However, they've just open-sourced a ton of .net, including the runtime. I expect that within the next year, Mono will either switch over to that core as is, or start pulling the newest parts they're still missing (C# 6.0 just hit preview, along with a version-bump of the runtime). A year from now, Mono and Microsoft's runtime should have feature parity.
Now, monogame itself might be targetting an older version of the framework (XNA would have), but I don't use it so I'm not sure. If so, you might not see any new-fangled goodness, but the existing support today should have already caught up to where XNA was. In theory, you should be able to take a monogame project, copy it over into XNA studio (which I think Microsoft still offers and you can still publish to Xbox 360?), and publish to Xbox 360 with little code changes (maybe none?). That's the power of the .net runtime and framework in a nutshell -- you can take an application (as a binary in some cases, or source code in others) and run it on a completely different hardware architecture, on a completely different OS, and a completely different .net runtime/framework implementation and it should "just work" for the most part.