As far as being up-to-date, the site htirwin posted is great. I would try to just look around and find as many sources as you can to get different views of how a certain feature might be implemented.
One of the books I partly learned from was Edward Angel's
Computer Graphics: A Top-Down Approach with Shader-Based OpenGL. Although it was quite hard to follow at times, and there are some errata in it that has fixes online, during which I turned to the opengl-tutorial.org website, and I'm still learning things from that and stackoverflow and stuff.
I know you said you didn't want youtube videos, but I think this guy is great, I learned a lot from him:
https://www.youtube.com/watch?v=6c1QYZAEP2M&list=PLRwVmtr-pp06qT6ckboaOhnm9FxmzHpbY although I don't think he uses VAOs, but I could be wrong.
In general, if you want to learn modern OpenGL, avoid code that has "glBeing();" or "glEnd(); in it, as well as other "push" and "pop" functions.
OpenGL 4.0 Shading Language Cookbook shows the basics of how to make shaders and work with the opengl pipeline, and has some great examples of shaders once you get more comfortable with OpenGL itself.