A certificate is a thing that is supposed to be validated, a convoluted process by which the certificate is put at the end of a certificate chain, that start with a root CA, goes from CA to sub-CA, and ends with the certificate that you are interested in (often called "end-entity"). The signature on each certificate is to be verified with the public key of the preceding certificate in the chain.
The root CA you already have (that's the point of root CA: this is what you start with). For proper validation, you need to obtain all the other certificates, to build a chain. In some protocols, there is provision for sending non-root CA certificates along with the end-entity (e.g. a SSL/TLS server does not send only its certificate to the client, but a complete chain). If the protocol at hand does not provide for that feature, then the system that must validate the certificate will have to obtain the non-root CA in some other way. Sometimes these can be downloaded, following URL found in certificates themselves (Authority Information Access extension), but this requires that the certificates have indeed been placed on remotely accessible servers with all the proper URL in place.
But, in all generality, it is considered polite to send non-root CA whenever you transmit the certificate itself. This can only make operations smoother.
The PKCS#7 format (now called CMS) is a generic format for encrypted and/or signed files. It so happens that when it uses the "signed" option, it includes an optional header field to store "extra certificates" that may be useful to anybody trying to verify the signatures. Thus, it became traditional to (ab)use this format into a "bag of certificates": this is a CMS file, signed, with no content and zero signature, but with the "extra certificate" field containing the certificates (without order). This is often called a "PKCS#7 certificate" and Windows systems like to call it a ".P7B file".
What should be in your trust store is the root CA -- and nothing else, by definition. The non-root CA are conveyed to you so that your machine may find it easy to build the chain. A very nice feature of certificates is that they are signed: thus, how you obtain them is irrelevant for security; what matters is whether the signature matches.