hyphen "The short one"
Its diminutive size helps the reader to read the two words as a single word. Ideally, this would be visually invisible and the two words would be directly joined, but grammar rules don't agree.
en-dash "The mid-sized one"
The difference in appearance is important in order to signal to the reader that it should not be interpreted as a compound word.
em-dash "The long one"
The length of this dash is so significant that it causes a mental pause similar to a semi-colon.
If your reader can infer the meaning of the character from the context of the sentence, it is acceptable to simply use a hyphen in all of these cases. The acceptability here is strictly a reader-perception measure and not at all grammar-related. If you are writing a piece that requires strict adherence to a style guide, you should follow that.
On a personal note, I find that a trailing space is usually required when using a hyphen in place of an em-dash.
Fun side note: en-dash and em-dash are named after the glyphs to which their lengths should match. You can use this to help you remember which one is longer: an n is shorter than an m.