Learning or not learning anything is entirely your choice. Yes, you can successfully develop .NET code without ever addressing to Win32 API… until you face with a problem not solvable with .NET.
Remember: every time you use P/Invoke to access Win32 API from .NET code, you loose your portability. As this is not the only source of portability limitation, using P/Invoke may or may not be a good decision.
Even in this case, you have some options. In some situation, it's perfectly OK to give up some extra feature: it it is not so critical, maybe it is not wise to sacrifice portability (especially is at the moment all your code is pure .NET). In other situations, you can leave this problems to your colleagues: not every one can have a reputation of a "Jack of all trades".
Also remember: the Microsoft plan is to abandon Windows sooner or later and move to systems which does not have Windows API or anything using its legacy; the new systems sit right on the Hardware Abstraction Layer. One such system is already created, called Singularity, see
http://en.wikipedia.org/wiki/Singularity_(operating_system)[
^], other systems are being developed, see
http://en.wikipedia.org/wiki/Midori_(operating_system)[
^],
http://en.wikipedia.org/wiki/Barrelfish[
^]. I know couple of Open Source OS projects bases on CLI standard:
http://en.wikipedia.org/wiki/Cosmos_(operating_system)[
^],
http://en.wikipedia.org/wiki/SharpOS_(operating_system)[
^].
So, your extensive knowledge of Win32 API may get obsolete, while .NET knowledge is still actual. Maybe, the real value is in the theoretical background rather than technical information? You need to be educated to make educated investment in your working time.
—SA