I don't know if this qualifies as "good", but here's how I would define it:
Managed Code: similar to Java, it is code that is compiled to run in a more restricted but protected run-time environment called the "CLR". It is safer and more portable because the CLR handles low-level details and platform differences for you. You don't have direct control of things like pointers, and other common programming mistakes are easier to spot and correct, sometimes automatically by the language or the CLR.
Unmanaged Code: the old way of making code where it is compiled all the way to native instructions, and runs independently of the CLR. You have full control over things like pointers.