One of the main goal of the plugin is having as little affect on your JIRA instance as possible. Some day if you decide to uninstall the plugin you can continue to use JIRA as if the plugin has never installed. All your versions and components will be available only they will not be component specific and there won't be any bundles of course since these are provided by this plugin. The plugin uses your original component and version definitions. You can define your components and versions as usual. Your previously defined component and version definitions are also fine, you can use them.
Secondly you don't need to use component specific version for every project but you don't need to do anything special to enable or disable plugin project by project. If you don't define any component specific versio within a project's administrative section this project continues to work as if plugin is not installed. Even if you define one component specific version, the plugin is enabled for that project. For other areas there are similar opt-out mechanisms exist in the add-on settings.
Subproject: Allows you to define hierarchy of projects at JIRA level. This will add a hierarchical project picker to normal project picker field and it will allow you to query issues belonging to any project and it's subprojects using single JQL statement.
Subcomponents: Allows you to define hierarchy of components including virtual components for just grouping inside a project. This is also another most voted feature request of JIRA (https://jira.atlassian.com/browse/JRA-846). Atlassian recommends use of this plugin as a solution to subcomponents for JIRA.
Bundles: Allows you to group component versions into packages for higher level release management.
Version Graph: You can define which version contains changes from which other version and query version graph.