mpls header is a slim header just after the ethernet (or dot1q) header indicated by it's ethertype. this is why mpls usually referred as a layer 2.5 technology. it's a fixed size header with the possibility to create stack of labels inticated by the bottom of stack bit. over the bos bit, a ttl, an exp and a label is contained within the header. the exp bits indicate packet's qos threatment, similar to ip's prec bits. the ttl serves the same purpose as it does in case of ip but with different expiration procedure. label indicates the lsp or vpn. bos indicates if more labels or the payload follow.
outermost label is used by p is the one that is closest to the ethernet header used by them for forwarding packets to it's destination. inner labels may follow outermost label in case of vpn provided or te used.
there are some special purpose labels: implicit null is the default behavior advertised for connected routes of a given pe. explicit null may be used instead of implicit null for end to end mpls based qos, in order to keep exp bits. entropy label is used to indicate that a load balancing label will follow.