Web components consist of three main technologies: HTML template, Shadow DOM, and Custom Elements. They aim to encapsulate reusable code into packages for maximum interoperability across platforms. Creating a web component with Angular involves generating a component, adding ViewEncapsulation.ShadowDom for styling encapsulation, and using the createCustomElement method to define the custom element. The component can then communicate with an Angular project using property binding. Future directions include lit-html for template literals and lit-element as a base class. Theming can be done with CSS Shadow Parts. Overall, web components provide maximum interoperability and Angular supports their creation and use within projects.