What makes some things difficult or easy to understand?
Part of it has to do with the ability to construct a model of reality. Every developer can relate to that. Visible, concrete things are easy to deconstruct in pragmatic terms. But once you get into abstract concepts, it gets harder and harder to bind it with your existing view of the world.

Some concepts are also very difficult to grasp if you can't connect parts of the concept with things you already understand. This process is called chunking, and it can be understood as dividing the problem until each part already makes sense to you, or is small enough to tackle the question on your own.

On top of this, you have to know what you're really looking for in order to ask the right questions. Some students just ask "How does this work? I don't understand", but the teacher can't answer something so vague. Richard Feynman make a very good statement about this problem in this interview.