Custom post type index (maybe using get_template_part)

In WordPress 3.1 virtual directory is created for you custom post type and so you don’t really need to do anything but if you are on a earlier version then you will need to make a few step:

which you have done most but you will need to change loop-publication.php and add your custom post type to the query args or replace the loop with your custom loop that includes the custom post type in the args something like this:

<?php $loop = new WP_Query( array( 'post_type' => 'publication', 'posts_per_page' => 10 ) ); ?>

<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>

    <?php the_title( '<h2 class="entry-title"><a href="' . get_permalink() . '" title="' . the_title_attribute( 'echo=0' ) . '" rel="bookmark">', '</a></h2>' ); ?>

    <div class="entry-content">
        <?php the_content(); ?>
    </div>
<?php endwhile; ?>

now since you want to view the list on http://www.myExampleSite.com/publications
add this code to the very top of your publications.php

<?php
/*
Template Name: publications
*/
?>

then create a page and change its slug to ‘publications’
and select publications as page template.

and you are set to go.