During which bootstrap phase hook_exit & hook_boot will be invoked?
hook_boot is getting invoked during fifth phase which is DRUPAL_BOOTSTRAP_PAGE_HEADER which set up the page header... This is for non cached pages..

/**
 * Invokes hook_boot(), initializes locking system, and sends HTTP headers.
 */
function _drupal_bootstrap_page_header() {
  bootstrap_invoke_all('boot');

  if (!drupal_is_cli()) {
    ob_start();
    drupal_page_header();
  }
}


For Cached pages both gets executed at Second Phase of Bootstrap which is DRUPAL_BOOTSTRAP_PAGE_CACHE with little difference...

  // If the skipping of the bootstrap hooks is not enforced, call
  // hook_boot.
  if (variable_get('page_cache_invoke_hooks', TRUE)) {
    bootstrap_invoke_all('boot');
  }
  drupal_serve_page_from_cache($cache);
  // If the skipping of the bootstrap hooks is not enforced, call
  // hook_exit.
  if (variable_get('page_cache_invoke_hooks', TRUE)) {
    bootstrap_invoke_all('exit');
  }


what make difference between these hooks is

  drupal_serve_page_from_cache($cache);


Which tells hook_boot and hook_exit is used before and after page requests for tasks like setup and cleanup respectively..

hook_exit also called in common.inc what makes difference is,  Invoke during DRUPAL_BOOTSTRAP_PAGE_CACHE phase applies where cached page requests are served..  In common.inc hook_exit is called for non cached pages..

function drupal_page_footer() {
  global $user;

  module_invoke_all('exit');

  // Commit the user session, if needed.
  drupal_session_commit();

  if (variable_get('cache', 0) &amp;&amp; ($cache = drupal_page_set_cache())) {
    drupal_serve_page_from_cache($cache);
  }
  else {
    ob_flush();
  }

  _registry_check_code(REGISTRY_WRITE_LOOKUP_CACHE);
  drupal_cache_system_paths();
  module_implements_write_cache();
  system_run_automated_cron();
}


Above confirms even for non cached requests hook_exit is invoked..