hook_library: if two libraries share common file, might this cause files to get loaded in wrong order?
For question #1 --

$options in hook_library() supports all the options in drupal_add_js.

$options in drupal_add_js supports a weight value to determine ordering:

From hook_library:


  'js': An array of JavaScript elements; each element's key is used as
  $data argument, each element's value is used as $options array for
  drupal_add_js(). To add library-specific (not module-specific)
  JavaScript settings, the key may be skipped, the value must specify
  'type' => 'setting', and the actual settings must be contained in a
  'data' element of the value.


From drupal_add_js:


  weight: A number defining the order in which the JavaScript is added
  to the page relative to other JavaScript with the same 'scope',
  'group', and 'every_page' value. In some cases, the order in which the
  JavaScript is presented on the page is very important. jQuery, for
  example, must be added to the page before any jQuery code is run, so
  jquery.js uses the JS_LIBRARY group and a weight of -20,
  jquery.once.js (a library drupal.js depends on) uses the JS_LIBRARY
  group and a weight of -19, drupal.js uses the JS_LIBRARY group and a
  weight of -1, other libraries use the JS_LIBRARY group and a weight of
  0 or higher, and all other scripts use one of the other group
  constants. The exact ordering of JavaScript is as follows:


For question #2 -- the safest thing todo is to always specify the inclusion order; eg weight.