Layers are independent of each other, and layer-2 headers are very simple and are not usually concerned with anything above layer-2 (PPP is an exception since it has a bridge to layer-3) since the point of layer-2 is to switch frames as quickly as possible. Some switches can use COS on trunk links, and trunks add 802.1Q tags into the existing frame header, including a three-bit COS value, which can be used for prioritizing frames, and this may, or may not, be employed with VoIP (depending on the switches or layer-2 protocol involved), but it really doesn't add another header.
Your second question depends on several things, not the least of which is that there is no single VoIP protocol, and some VoIP protocols are proprietary. Your link only gives the example for one VoIP encoding method (G.729). It also explains that you could have GRE, or not, and, since VoIP is normally unicast traffic, GRE is probably unnecessary. You don't provide enough information to accurately answer your second question, and, if you are using a proprietary VoIP protocol, it may not be able to be answered with certainty.