[indent=1]6. While performing the steps alluded to in #4, a VAO object must be bound. Subsequent calls to glVertexAttribPointer and glEnableVertexAttribArray will affect that VAO. As such, the VBOs that are bound during calls to glVertexAttribPointer are indirectly associated with the VAO. When it is time to draw, one need only bind the VAO beforehand and there is no need to bind any VBOs or enable/disable specific arrays.
The above is basically what I've been able to come up with after reading the man pages, the OpenGL wiki, and some example source code here and there. I was a bit confused about the reuse of functions in each method, and the reuse of terms such as "vertex arrays" to describe (apparently) different things. There was also some ambiguity in the code samples that I examined. For instance, they would often call glEnableVertexAttribArray only once, when the VAO was first being set up. However, I couldn't tell if they were doing this because the VAO "remembers" which indices were enabled, or if they were just being efficient because the example never wanted those arrays to be disabled. Things like that. I'm hoping I have it straight now, or at least close.