Thanks to @Bash for getting me started, I've come up with a decent solution that's working well so far.
Here's the code...
// create array of current taxonomy term slugs
$current_project_term_slugs = wp_get_object_terms($post->ID, 'project_type', array('fields' => 'slugs'));
// convert array to comma seperated values in string to query posts with same taxonomy terms
$term_slugs = join(', ', $current_project_term_slugs);
// set up query args
$project_query = array(
'posts_per_page' => 3,
'post_type' => 'projects',
'project_type' => $term_slugs,
'post__not_in' => array($post->ID)
query_posts ( $project_query ); while ( have_posts() ) :
// next project primary
// next project secondary 1
// next project secondary 2