Here's something I wrote up a couple years ago, but it's pertinent every year at this time, so I'll repost it.
There's a good bit of confusion about the rules surrounding junior players because they're not in the NHL Collective Bargaining Agreement, something everyone can access. The rules are in a private agreement between the NHL and CHL (Canadian Hockey League, made up of the QMJHL, OHL and WHL). A lot of people think the AHL has a rule that someone has to be 20 to play there. Common misconception. It's not a rule made by the AHL. If it were up to them, they would take everyone over 18. Officially that's the AHL's policy in fact.
The NHL/CHL agreement states that a player with junior eligibility signed by an NHL team must be returned to his junior team if he's not playing in the NHL. It's part of a deal that provides CHL money for players produced (sort of like the IIHF agreement between the NHL and European countries). The NHL agrees to send the teenagers back because CHL needs these players - its top players -- to make money. If the CHL didn't make money, they couldn't produce players. You scratch my back, I scratch yours.
Specifically, the rule says that if a player played in junior before they were drafted by the NHL, then they have to either be 20 years old by Dec. 31 OR have played four years of junior in order to play in the minors . That second condition rarely comes into effect. It would only apply to players who began in the CHL at age 15.
Players who are not drafted from the CHL, like NCAA and European players, aren't held to these rules. Players who were drafted out of Europe and then play in the CHL later, can play in the minors under the age of 20. European players drafted out of the CHL are held to it. Nationality is not part of the equation -- it's where you were drafted from (which league developed you).
In the long run, it's probably helpful for the prospects' development as people to stay in junior a bit longer. Teenagers are better off living with billet families instead of on their own, far from home. One issue that keeps coming up is that some players are clearly ready to move on from the CHL, but not quite ready for the NHL. They end up playing junior, but it's hard to keep them challenged or motivated in that final year.
Normally this rule means that players play two more years of junior after being drafted before they turn pro. There are two exceptions - the really talented who make the NHL at 18 or 19, and those lucky enough to be born between Sept. 15 and Dec. 31. Those lucky fall birthday players were the oldest in their draft class (a player must be 18 by the year of their draft to be eligible), and are old enough that they only have to play one more year of junior after their selection, then can move to the minors.
And on a related topic, CHL players are eligible to play in the AHL once their junior season is over even if they don't yet meet the age criteria listed above. So you could see 18 and 19-year-old juniors in the AHL late in the season. They can and do return to junior the next year.
Also important to note: if a junior player is returned to the CHL before he plays 10 games in the NHL (or AHL) in a given season, the year does not count towards the player's entry-level contract and the contract itself does not count towards the team's 50-contract limit. The team has to make a decision to keep or return him before game 10 starts.