A taxonomy-provider module: enable/disable vs install/uninstall If a module provides a taxonomy vocabulary, what should happen in hook_install, hook_enable, hook_uninstall and hook_disable?

My main concern is how hook_uninstall should differ from hook_disable. Should we just taxonomy_vocabulary_delete() in both hooks? Should the existing nodes referring to the terms just lose the references upon disabling as well as uninstalling of the module?
There is at least one core module that creates a vocabulary that we can use as a guide: Forum. 

It creates the vocabulary "Forums" in hook_enable() (see form_enable() function).

It does not remove the vocabulary in hook_disable() or hook_uninstall(). (see forum_uninstall() function - Forum does not have a hook_disable() function.

So, to answer your question, create the vocabulary in hook_enable() and don't delete it.

One other note gleaned from the forum.install file that is probably relevant to your module is that you need to make sure your module is loaded after the Taxonomy module. You can do so by settings the module's weight to 1.