Answering your second question – yes, it is possible, you can use tax_query for this, for example, this query will get all posts that has any term of ‘flowers’ taxonomy AND ‘colors’ taxonomy:
$query = new WP_Query( array(
'post_type' => 'custom-post',
'posts_per_page' => 5,
'order' => 'DESC',
'tax_query' => array(
'relation' => 'AND', // it is also possible to use OR
array(
'taxonomy' => 'flowers',
'operator' => 'EXISTS'
),
array(
'taxonomy' => 'colors',
'operator' => 'EXISTS'
)
)
) );
The second query will get all posts that have terms from ‘flowers’ taxonomy, but not from ‘colors’ taxonomy:
$query = new WP_Query( array(
'post_type' => 'custom-post',
'posts_per_page' => 5,
'order' => 'DESC',
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'flowers',
'operator' => 'EXISTS'
),
array(
'taxonomy' => 'colors',
'operator' => 'NOT EXISTS' // <-- Take a look at this operator
)
)
) );
The code is not tested
Here are also links to the Documentation, check out how to use WP_Query https://developer.wordpress.org/reference/classes/wp_query/#standard-loop
And also WP_Tax_Query https://developer.wordpress.org/reference/classes/wp_query/#taxonomy-parameters