Add new user and site per front end form

create a form, same as contact or custom content from frontend and send the content of field with the WP core function wp_insert_user() to WP, add the users.

an example without form, only a function to insert users and see the fields for the data array.

function fb_wp_insert_user() {
    $user_data = array(
        'ID' => '',
        'user_pass' => wp_generate_password(),
        'user_login' => 'dummy',
        'user_nicename' => 'Dummy',
        'user_url' => '',
        'user_email' => '[email protected]',
        'display_name' => 'Dummy',
        'nickname' => 'dummy',
        'first_name' => 'Dummy',
        'user_registered' => '2010-05-15 05:55:55',
        'role' => get_option('default_role') // Use default role or another role, e.g. 'editor'
    );
    $user_id = wp_insert_user( $user_data );
}

I think is an good idea, that you check the user, before you add the entry on email or name. But you can also update via function: wp_update_user()