There was a thread on HN in the last few months. Here's a quick, general guide:
* Hyphens join things into one term: sun-bleached
* EN dashes create a continuous range between things: Reagan was president 1981–1989; Chicago–Boston flight.
* EM dashes create a break between things: What the—?; I was walking — my car was out of gas — when I saw the accident.