How to automatically create an index of child sites at the root url for a multisite installation?

For create the links to your child sites use this

    function elenco_sotto_siti(){
global $wpdb;
$blogs = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->blogs  WHERE public="1" AND archived='0' AND mature="0" AND spam='0' AND deleted='0' ORDER BY blog_id "),ARRAY_A );  
    return $blogs;

    }

For question 2 and 3, i use the option framework plugin, and i grab the description and other setting with

    switch_to_blog($site->blog_id);
$immagine= of_get_option('example_uploader');
    restore_current_blog();

If you create an option fot the address and grab it into your main site you can create the map
The option framework plugin is at this URL http://wptheming.com/options-framework-plugin/