Order get_terms by multiple values

WP_Term_Query, which powers get_terms(), does not support ordering by multiple properties the same way WP_Query does.

But, since you don’t need to worry about pagination, you’ll be able to achieve the result you want by sorting the results after querying them:

$allcities = get_terms( array(
    'taxonomy'   => 'city',
    'hide_empty' => false,
) );

usort( $allcities, function( $a, $b ) {
    $a_country = (int) get_term_meta( $a->term_id, 'country', true );
    $b_country = (int) get_term_meta( $b->term_id, 'country', true );

    return $a_country - $b_country ?: $a->count - $count;
} );