Set your regular permalinks to
/blog/%postname%/
Register your custom post type with has_archive => TRUE
and with_front => FALSE
.
Example:
add_action ( 'init', 'register_project_cpt' );
function register_project_cpt()
{
register_post_type(
'projects',
array (
'has_archive' => TRUE,
'hierarchical' => TRUE,
'public' => TRUE,
'publicly_queryable' => TRUE,
'rewrite' => array (
'slug' => _x( 'projects', 'slug', 'text_domain' ),
'with_front' => FALSE
),
'show_in_nav_menus' => TRUE,
'show_in_menu' => TRUE,
'show_in_admin_bar' => TRUE,
'show_ui' => TRUE,
'supports' => array(
'author',
'comments',
'editor',
'excerpt',
'page-attributes',
'revisions',
'thumbnail',
'title',
)
)
);
}
In wp-admin/options-reading.php
choose a page for the blog post archives, that will be used on /blog/
then.