Learning to program in the .NET CF is about learning to live with, and work around, limitations. The framework offers less, the OS offers less, and the device offers less than you are used to working with in a Win or Web app. Things that you take for granted in standard .NET Framework programming, like configuration management, networking, XML, web services, etc. are different and almost always more complex in the .NET CF. On the device, you now have to deal with screen orientation changes, differences in screen resolution between devices, memory and storage limitations, and variable network availability issues.
My advice in learning the .NET CF is to get your hands dirty and create some sample apps that flex different parts of the framework. Also check out the below page for some really good videos to get you started.
.NET CF videos
.NET CF is fun, enjoy it!