Not sure I'm following entirely and/or if this is the best way around it... but you could try creating a page template, (a "normal" page) and within the code, you can modify the query to only pull in that particular CPT.
Create new page template file, page-new-projects.php
.
Ensure you properly name the template accordingly (this is an example):
<?php
/*
Template Name: New Projects
*/
?>
Alter the loop of the page-new-projects.php
to only include 'post_type'=> 'new-projects'
(NOTE: custom post types cannot contain spaces, which is why I added the -
)
Create a new page within WordPress, titled "projects" and ensure you select the New Projects
page template (or whatever name you pass through in Step 2).
Admittedly, you lose me when you ask if you can add more pages of type 'new projects' and still define one of them as the default page, but perhaps the above page-template may shed some light on what you ultimately want to do.
As an example, I envision the loop to run in the following fashion:
//set the arguments to pass into WP_Query
$args = array('post_type'=>'new-projects'); //This is assuming 'new-projects' is the custom post type
$query = new WP_Query( $args );
// The Loop
while ( $query->have_posts() ) : $query->the_post();
//do whatever you want to do within the loop
endwhile;
Again, there may be a better way around this...
References:
1) http://codex.wordpress.org/Pages#Creating_Your_Own_Page_Templates
2) http://codex.wordpress.org/Class_Reference/WP_Query