Understanding how the fixed-function pipeline truly works is hard. I would go so far as to say that it's harder than learning shaders. Once you get it, shaders are simple. Understanding the intricacies of texture environment stuff, combiners and whatnot, is very tricky and requires frequent visits to reference docs to make sure everything is set up right. Even if you understand the theeverything correctly, it's easy to make a small mistake that causes everything to break.
The difference is that you can make fixed-function work without understanding it. This encourages cargo cult programming. It makes it possible to get something on the screen without really knowing what one is doing. Over on the OpenGL.org forums, we see questions constantly about minutaeminutiae surrounding fixed-function, from people not knowing how gluLookAt works, to difficulties with lighting, to people trying to get some particular effect to work with the texture environment.