There are some practical and some conventional differences.
- On Unix and Unix-like systems, only the superuser can bind services to ports <1024. These ports are assigned by IETF  (well, IANA says  that they are assigned by IETF, and IETF says  that they are assigned by IANA, but they mean that IETF suggests the assignments and IANA keeps the authoritative list).
- Ports 1024--49151 are available for registration at IANA for more common purposes since they are available for regular users to bind to. This is why they are used for e.g. game servers. The registration is an effort to try to avoid port clashes (which happens anyway, since not everyone thinks it's worth the trouble to register).
- Ports 49152--65535 are explicitly not available for registration . This ensures that they can be used by any application, after checking that they are not already in use. Since the 1024--49151 range can be registered, if an application would take the first available port in that range, a clash might occur when the registered application later would start up. Similarly, there is an advantage in being able to be "sure" (in theory) that a certain port corresponds to a certain service.
All these mentioned differences are specified through , but in practice as I mentioned not everyone adheres to the registered port assignments. You'll find almost none of the common game server ports (e.g. 27015 for Counter-strike, 6889 for Starcraft) listed, and there are in practice conventional system ports (411 for Direct Connect) that also are not registered. The superuser binding requirement on ports <1024 is also just an OS restriction.
IANA keeps the authoritative list on port number assignment .