Start here. This is the direct spoken answer to practice first.
Overview
Projection decides where caller-owned content renders; queries obtain references inside a specific ownership boundary.
Content projection lets a component render content supplied by its caller through ng-content. A view query looks inside the component's own template, while a content query looks at projected descendants. I prefer normal inputs and outputs for data flow and use a query only when the component must coordinate with a rendered child, directive, template, or element.