When is it appropriate to use a hyphen when naming colors?
Blue-green has a dash but
Teal blue does not.
Is there some general English rule that applies?
Generally one uses a hyphen for compound adjectives where they precede the noun or noun clause which they describe.
For example, I would write 'A blue-green sea provided the background curtain to the open-air theatre'.
But I might equally say 'My favourite colour is blue green', and 'I love being in the open air'.
In blue-green there two distinct colors, so it's really a combination of blue and green, i.e., a bluish green. It's a compound adjective as in blue-green algae; can also be used as a noun for that shade of color. --> use hyphen.
In teal blue 'teal' is a particular shade of "moderate or dark bluish green to greenish blue", so it merely provides additional information on what kind of (shade of) blue, in the expression teal blue. Teal is the adjective and blue is the noun. --> no hyphen.