"Connection refused" literally means that there is no server (of whichever protocol is being used: telnetd, sshd, ircd, ftpd) monitoring that port on that IP address. There might be an actual computer that's handling that IP address, but the process (server daemon) you are trying to connect to is simply not running. When you see "Connection timed out," you can't really tell if the process is running or if your routing to that server is just so slow that you can't get connected before the connection attempt gives up.
If the server is full, then you will be able to connect (and you can watch it Finding your hostname and perhaps checking for your ident), only to get an ERROR message telling you "No more connections allowed on this connection class" or "I:line full" or "Server is full." These are completely different scenarios. If I am running my ircd, connect to it and the server is full, I get the second message. If I kill the ircd process from the shell or /die it as an IRC Operator on that server, now the ircd itself is no longer running and attempting to connect will give me the "Connection refused" message.
Note that "Connection refused" is not an ERROR message from the server; it is a response at the TCP level, much like "Connection reset by peer" or "Software caused connection abort" messages.