Interlacing vertex buffer data with extra efficiency
Is it even possible to have opengl assume that the Z is always 0?


Yes it is. Just set the component count to 2 in glVertexAttribPointer and the other 2 components (z and w) will be auto filled with 0 and 1 resp.


  Is it possible to reuse the color like to hat? 


No it is not. Opengl (and most other graphics apis) require that each vertex is referenced by only a single index.