C++ isn't difficult, but it has a lot of complicated rules to learn such as Koenig lookup, SFINAE, RAII, exception safety etc. It is also extremely flexible, allowing such things as template meta-programming, and the main confusion is that when you use C, or C++, you are really working in two languages; the language the preprocessor understands and the language the compiler understands. Either way you only pay for what you use, but when there is so much you can use, it takes a lot if you want to learn it all.
But there is never a good reason to "learn it all". Learn only what is applicable to your current need for C++, because if you go gallavanting around learning about template classes when you don't need them, you'll just end up re-learning them when you do.