Every time the SkinTemplateNavigation::SpecialPage and SkinTemplateNavigation hooks are run we also run the SkinTemplateNavigation::Universal hook. The latter is always run based on the current page. We could just run the latter and get rid of 2 needless hooks.
Having 3 hooks doing pretty much the same thing seems gratutious. I would suggest standardizing on SkinTemplateNavigation::Universal and for the hooks themselves to do the required checks they need. I am however open to keeping all three after hearing from the current extensions using these hooks (tagged) and benefits they see in having three of them.
The SkinTemplateNavigation hook is deprecated in favor of SkinTemplateNavigation::Universal . It's up to callers to check whether the title exists if they care.
The SkinTemplateNavigation::SpecialPage is deprecated in favor of SkinTemplateNavigation::Universal. Callers must use $skin->getTitle() to check whether the page is a special page
Extensions/skins that are fixed are listed here and have been untagged.