Directives / components replace the combination of controllers, scopes, and directives from AngularJS (Angular 1).
A component is a view and its associated view controller. (Directives have no representations.) Components are how we create representations for our application and maintain these representations with (minimal) state, data, and logic.
A view is an HTML template with optional Angular syntax that controls the area of โโthe screen / display. The component provides some (subset!) Application data for presentation and processes the user interface logic for presentation. Data should not belong to components. Rather, the component should only receive links to the data needed to control the view. (This is similar to the same best practice used in AngularJS - controllers should receive data references, not have them.) Services should usually have data.
Similarly, the logic of a component should be limited by the logic needed to control the presentation (hence, the "presentation logic"). Application logic belongs to services. Other tasks also relate to services, and not to components: checking user input, logging, interacting with (web servers), etc.
So components (like AngularJS controllers) should be as thin as possible. They should handle user interaction and determine the data bindings needed for this. They should be focused on supporting the look.
Angular creates and destroys components as needed, as the user interacts with the application. Components have a life cycle, and there are life cycle hooks that we can connect to.
A component is just a class until we tell Angular about it. And we do this by adding metadata to the class.
I consider it more important to know what belongs to the component and what does not, instead of trying to determine whether it is a โcontrollerโ or โmodelโ - these terms are so broad and excessive that I think you can force the two developers to agree on the definition of a term.
Some of the above suggestions are most likely copied from Angular.io docs, blogs, other SO posts, etc. I have a bunch of notes about Angular in the document, and I don't always keep track of the source links.