If you get swamped with things you don't understand then write a list of them and take them one by one at your own pace. This is something that's going to happen a lot in programming, since there's always new ideas and methodologies coming up. If there's some concept that just boggles you then set it aside for a minute and work more on things that you understand better. Eventually you'll come to the point where you want some kind of functionality or design pattern and you'll suddenly go "hey this sounds just like that X that was confusing me before!" then you re-read the docs for it and it all suddenly makes sense. Also, do not underestimate the power of your subconscious mind as it relates to learning new concepts. If you decide to sit down and learn some hard concept then sit down and read about it, then go take a break or a nap and just chill for a while. Then come back and read it again and try to mess with it a little. Your brain has to build complex new information management structures in order to allow you to think clearly about this stuff, and that takes time. If you're sitting there and bashing your head against the textbook nonstop then you're querying that information before your brain has had a chance to put it into place and you're basically preventing yourself from learning it. Many a time I have read something in a book or on a site and said, "What the hell did I just read?" Then I'd go to bed and get up in the morning and understand it just perfectly.
The important thing is to break your workload (yes, learning is work) into manageable chunks. This is true for programs and true for programmers.