Normally, when you upgrade/downgrade Hudson, its built-in plugins overwrite whatever versions of the plugins you currently have in $JENKINS_HOME. This ensures that you use the consistent version of those plugins. However, this behavior also means that those plugins can never be manually updated, as every time you start Jenkins they'll be replaced by the bundled versions.
So when you manually update those bundled plugins, Jenkins will mark those plugins as pinned to the particular version. Pinned plugins will never be overwritten by the bundled plugins during Hudson boot up. However, by definition, with pinned plugins you lose the benefit of automatic upgrade when you upgrade Hudson.
So the plugin manager in Jenkins allows you to explicitly unpin plugins. On file system, Jenkins creates an empty file called
$JENKINS_HOME/plugins/plugin.hpi.pinned to indicate the pinning. This file can be manually created/deleted to control the pinning behavior.