題意通り。2回ほど引っかかってしまったのでメモとして残すことに。
VAO (Vertex Array Object) について
OpenGL でコンテキスト作成時に Core Profile を指定した場合描画するためには OpenGL 3.0 で仕様に入った VAO が必要になる。3.0 未満でも GL_ARB_vertex_array_object があれば利用可能。Qt で使う場合 5.1 で入った QOpenGLVertexArrayObject を使うと少しシンプルになる。
無視して VAO 作らなかった場合
VAO 以外で描画しようとすると glEnableVertexAttribute または glDraw で始まる描画関数で GL_INVALID_OPERATION を返す。そのため何も描画されない。OpenGL 4.4 の Core Profile 仕様書では VAO 自体の仕様は 10.4 にあり、VAO が指定されないとエラーが返されることは 10.3/10.5 のエラー仕様に幾つか書かれている。
Core Profile について
Core Profile は OpenGL 3.2 で Compatible Profile とともに導入され、OSX では 10.7 で OpenGL 3.3 対応とともに入った。OSX では 3.x 以上の機能は拡張として用意されるものを除いて基本的に Core Profile じゃないと利用できない。2.1 以前の固定機能がたくさん使われているがどうしても Core Profile を使いたい場合は Regal を導入すると良いだろう。