@Extension is used to mark implementations of Extension points for Jenkins. Jenkins itself creates instances of the extensions and attaches them to the right extension point instance. How the extension instances are created depends on where the annotation is placed.
The javadoc of @Extension lists the possible usage options.
If your plugin was written following the old manual registration mechanism, there might be a pitfall: