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.