I learned C on a PIC18F device, and although trying to learn the language + the IDE + the architecture of the PIC all at the same time felt like a brick wall at the time, it was well worth the effort. The time has paid for itself many times over and continues to do so.
More recently I decided to learn an ARM based microcontroller (STM32, Cortex-M0 series), on the simple basis that they're much faster, much more capable, and absolutely no more expensive than 8 bit PICs. (Seriously, just take a look at the difference in price/performance ratio for a similar set of memory and peripherals between, say, PIC18 and STM32... it's crazy! Microchip, take note...)
I decided to use manufacturer-supplied libraries when learning the ST part, but with hindsight, I'm not sure that was such a good idea. The peripherals in the STM32 are quite complicated, of course, but they need to be learned anyway. Adding a layer of abstraction in the form of the library didn't really help, it was more like a layer of obfuscation; most of the library functions boil down to a check that their parameters are valid followed by some bit twiddling, and I think it would have been easier (and faster) to twiddle the bits directly.