1 - This is just about "standards". By default, your browser will reach port 443 if you specify https, and 80 if http for exemple. You can do what ever you want for your particular use, but you will need to specify your custom port like this : some.place.to.go:1000
You may use the "reserved and well known" ports (0-1023) for the corresponding services, but if you need/want to use another, it's up to you... remember you have more than 65k of them :)
2- because ports < 1024 are reserved and cannot be used to initiate a connection
3- we are talking about TCP connections...
On a particular machine, a port number coupled with the IP address of the machine is known as a socket. A combination of IP and port on both client and server is known as four tuple. This four tuple uniquely identifies a connection.
So the server can talk with many clients because each client has made a unique connection to the server in order to talk to it.
Ex: A client (cli) connect to the server (srv) from a client port (5432) to the server port (80)
cli:5432 -> srv:80
The server will respond to the client on the same client port :
srv:80 -> cli:5432
And so on...
So for the 2) question :
- imagine on the client's side that there is a http server running, the "local" port 80 is already used.
- imagine there are several clients behind a router (with only 1 IP...), how couls many clients use the same originating port ?
If the connection was made from port 80 and not from an arbitrary port, neither of these situations will work.
that's why we need to use an arbitrary port to initiate the request !
4- from an IP to the world, max 65535 (because you can only bind 65k sockets... as you have only 65k ports)
If you want to go further into this, I encourage you to read this stuff :
http://en.wikipedia.org/wiki/Internet_protocol_suite (and the related articles...)