I tend to understand things rather quickly, but after 2 years of programming in Python I still stumble across things (like Flask today) that amaze me. I look at the code, have no idea what's going on, and then feel very humbled. I feel like an absolute expert each time this happens, up until the moment it happens. Then, for about a 2 week period I feel like an absolute beginner. 

Does this often happen, or does it indicated that I have so much more to learn before I can even be considered a "good" programmer?

I call it the "Freshman Feeling".  When it seems like everyone else has it together, is going faster, knows all of the buildings on campus, isn't struggling, etc.  In programming, I'm disoriented, uncomfortable, unsure whether or not I'll meet the deadline - it's fear.

The feeling goes away when I acknowledge the fear for what it is, then ignore it, dive in and begin to learn - struggling through each problem one at a time.

The thing is, now, I use it as my gauge to tell me when I'm really learning.  If I don't feel it once in a while, I know I'm not moving forward - I'm stagnant.

One of the programmers at work has this motto, "Comfort is the enemy."

That feeling you talk about can be your best friend if you want to get better.
