How can I develop a plugin that generates a page dynamically

You can create the page using wp_insert_post()
and make sure you send post type as ‘page’. and if the user nav menu uses wp_list_pages
the page will be added to the nav menu automatically and to run it on activation you can have you plugin check if it exists and save its id so it will only create it once.

$my_page = get_option('my_plugin_page');
if (!$my_page){
    // Create post/page object
    $my_new_page = array(
        'post_title' => 'My page',
        'post_content' => 'This is my page content.',
        'post_status' => 'publish'
    );

    // Insert the post into the database
    $my_page = wp_insert_post( $my_new_page );
    update_option('my_plugin_page',$my_page);
}