The best explanation I've seen so far:
http://restcookbook.com/HTTP%20Methods/400-vs-500/
http://restcookbook.com/HTTP%20Methods/400-vs-500/
4xx codes are used to tell the client that a fault has taken place on THEIR side. They should not retransmit the same request again, but fix the error first.5xx codes tell the client something happened on the server and their request by itself was perfectly valid. The client can continue and try again with the request without modification.