basically, all of .NET code is "managed", and safe (integer overflow checks etc.). P/Invoke uses old (unmanaged) code in your managed (.NET) apps. so, before .NET, P/Invoke was not needed - anything could use anything else. But, of course, microsoft could not create managed code for EVERYTHING...so they stuck p/invoke in so we could do their work :).
It's meant to be easy when you get the hang of it (I have used it once, and then it didnt work)...so good luck :)