Why does DRUPAL_BOOTSTRAP_PAGE_CACHE phase come before DRUPAL_BOOTSTRAP_DATABASE?
Inside of _drupal_bootstrap_page_cache() the key bit of information is this bit of code

  if (variable_get('page_cache_without_database')) {
    $cache_enabled = TRUE;
  }
  else {
    drupal_bootstrap(DRUPAL_BOOTSTRAP_VARIABLES, FALSE);
    $cache_enabled = variable_get('cache');
  }


The call to bootstrap DRUPAL_BOOTSTRAP_VARIABLES will also bootstrap DRUPAL_BOOTSTRAP_DATABASE because it's before variables inside of drupal_bootstrap()

What this means is if your cache doesn't require a database connection (like memcache or filecache) then you can speedup page cache hits by not connecting to the database. The linked article talks about this.