creating files for displaying different custom post type posts with paging

You don’t have to create any dummy page for custom post types, as those archive pages are just an automated process and named using the post type object name.

To make sure your Custom Registered Post Type uses/support archive page, set the parameter 'has_archive' => 'documents' for Document & 'has_archive' => 'videos' for Video.

register_post_type( 'video', array(
    'labels'      => '....',
    'has_archive' => 'videos'
) );
register_post_type( 'document', array(
    'labels'      => '....',
    'has_archive' => 'documents'
) );

Now, you can create two files in your theme folder to display both archive or you can use the default one archive.php.

For documents archive, the filename would be archive-document.php
For videos archive, the filename would be archive-video.php

The archive page template file for the default post type post is home.php. If you want to display posts at site.com/posts, just simply create a dummy page using slug ‘posts’, and set the “Front page displays” (wp admin -> settings -> reading) option to “A Static page”, and set the “Posts page:” to the newly created posts page.

However, common practices are different. What most of the people does is to make the index.php file adoptable. So regardless of post type, it display posts simply. A simple index.php file looks like the following –

<?php get_header(); // this gets the header.php file ?>
<?php if( have_posts() ) : // this checks if current query have posts ?>
    <?php while( have_posts() ): // this trigger looping through each of the post ?>
        <?php the_post(); ?>

        <?php the_title(); ?>
        <?php the_content(); ?>

    <?php endwhile; ?>
<?php endif; ?>
<?php get_footer(); // this gets the footer.php file ?>

If your theme directory don’t have a archive.php or archive-{$post_type}.php file, then for any kind of post type archive page, index.php file will be called. the_title() function displays the title, the_content() displays the content of that post.

You really don’t have to care about routing for archive page as WordPress does it within core. Including the pagination – site.com/videos/page/2/.

The big reference for naming or anything about Template: Template_Hierarchy