If you haven't read it yet, here is the Part 1 Link:
Introduction To Angular Modules Part 1: NgModule Metadata
Introduction to Angular modules: Part 2
NgModules and components
NgModules provide a compilation context for their components.
A root NgModule always has a root component that is created during bootstrap.
Any NgModule can include any number of additional components, which can be loaded through the router or created through the template.
The components that belong to an NgModule share a compilation context.
A component and its template together define a view.
A component can contain a view hierarchy, which allows you to define arbitrarily complex areas of the screen that can be created, modified, and destroyed as a unit.
A view hierarchy can mix views defined in components that belong to different NgModules. This is often the case, especially for UI libraries.
When you create a component, it's associated directly with a single view, called the host view.
The host view can be the root of a view hierarchy, which can contain embedded views, which are in turn the host views of other components.
Those components can be in the same NgModule, or can be imported from other NgModules.
Views in the tree can be nested to any depth.
Note: The hierarchical structure of views is a key factor in the way Angular detects and responds to changes in the DOM and app data.