Hyphen usage does not typically follow strict rules, but rather a number of guidelines.
The primary question should be: Is the absence of a hyphen likely to cause the reader confusion? If so, use a hyphen. If not, do not use a hyphen. When it doubt, defer to omitting the hyphen.
Some guidelines for common use cases:
Do hyphenate compound adjectives that come directly before a noun if confusion about the meaning is possible: a man-eating tiger (as opposed to a man eating a tiger); an old-fashioned chair (as opposed to a fashioned chair that is old)
Do not hyphenate compound adjectives that come directly before a noun if confusion is unlikely: the hot dog vendor (dog vendors do not exist, regardless of whether they are hot or cold); a high octane offense
Do hyphenate compound adjectives that include a number that denotes a specific amount or quantity: a three-run double; a 7-yard touchdown; the seven-time All-Star; a second-year shortstop
Do not hyphenate compound adjectives that include a number that denotes a range or estimate: a top five draft pick; a low 90s fastball; the late 20th century dynasty
Do hyphenate compound adjectives that include an incomplete word: a mid-tier quarterback; the multi-time winner; an anti-establishment thinker
Do not hyphenate adverbs that end in -ly that come directly before an adjective: a badly thrown pass; the poorly constructed roster
Do not hyphenate compound nouns, unless confusion is certain or likely: The incoming class is filled with show stoppers; Her shooting ability makes her a zone buster; The offense needs a deep threat.
Do hyphenate compound nouns that, due to common usage, include hyphens: All-Star; All-American; 3-pointer
