An add-on (or plugin, they are slightly different) is an installable component that supplements or enhances the functionality of Jira and Confluence in some way. e.g Automation for Jira, Team calendar for Confluence.
Both recent version of Jira and Confluence primarily use UPM (Universal Plugin Manager) to manage add-ons. They may look very similar in the UI, but under the hood they are actually different.
Jira stores plugin files in /path_to_jira_home/plugins/installed-plugins/, and you can install a new plugin by copying the jar file into there. Confluence stores plugins data in Database (table plugindata), and only supports to install plugin via UPM.
To remove a plugin, the first choice is always using UPM. If UPM does not work for some reason, then for Jira you can remove the plugin file from the above path then restart Jira. For Confluence, you have to remove it from Database first, then remove the cached plugin from from several places. Please refer this KB: How to manually remove malfunctioning add-ons in Confluence.
More or less, installing a new add-on will introduce some overheads and performance impacts to Jira and Confluence. So please be very careful on what to install. My personal opinion is to install as less as possible while keeping the balance between features and stability/performance, especially when you are running a large instance. Any add-on could be the last straw that breaks the camel’s back.
Last but not least, always use Atlassian Verified add-ons. It normally has better quality in terms of product and support.