How do (or should) two separate modules implement the same external library using the Libraries 2.x API? The Libraries module exists to make it easier for multiple modules to use the same library, but how is this actually done?

Do Module A and Module B both implement the library using hook_libraries_info() and hook_requirements()? If so, how do they avoid conflicting with each other? In my experience (trying to use Masonry API and Manual Crop modules), they conflict, even when both use the same namespacing, etc.

Or should a new module (Module C) be created that implements the library, and then Module A and Module B depend on Module C and use libraries_load()?
The Libraries module provides libraries_load which allows on-demand loading of libraries that are in sites/all/libraries. Libraries are defined by using hook_libraries_info.

It's a good idea to have a single module that defines hook_libraries_info() for a given library. For many modules, this is the primary module for Drupal. Take for instance Mailchimp or one of many commerce modules.

Alternatively, if you know that this module will be used by one or more modules that have no dependency on each other, you can define just a single module which defines the library and then have each module depend on that one.

As far as hook_requirements go, that is entirely up to you. I will say that if you do decide to put a requirement in each individual module, please namespace it. Lots of payment modules require the cURL extension and drop that requirement into $requirements['curl'] instead of $requirements['MYMODULE_curl'] this will cause a problem since requirements do not have an alter hook and a key collision will cause errors. So make sure you do the latter and not the former. However, if you're doing a single module, this wouldn't be a problem as you'd just do hook_requirements in it.