While the main plugin instance class of your project should implement the
PluginInterfaceinterface, the other classes should implement the
PluginComponentInterfaceinterface. Obvious exceptions are classes designed to be utilities -- and anything else that you think shouldn't (we don't know your project!).
Plugin components are simple though. They simple posses an ID, a name, and a means to get the main plugin instance. For example, our Locked Payment Methods plugin has a class for each unlock strategy and each of those classes is a plugin component. The name of the user profile unlock strategy is simply User Meta Unlock Strategy and its ID is an autogenerated hash.
The ID of a plugin component can be anything that identifies it uniquely, whereas the name is designed to be spelled out in plain English for human understanding.
As a rule of thumb, plugin components are singletons. This is not enforced, but be sure to know what you're doing if you instantiate the same component multiple times.