After doing some basic tests, a few things stay unclear to me:
While you're initializing your application does the order in which you bind a vao, vbo and ibo matter? From most tutorials i have seen you generate the vao first then the vbo and then the ibo but in others they changed the order and it seemed to work...
How does the vao know what is being bind to it? Do you call some special function(behind the scenes) when calling glBindBuffer to the active vao object?
I'm not only asking "how" they work but also "why" they work, I've tried reading some of the openGL specifications but it was too confusing for a novice openGL programmer.