Is the client supposed to behave differently? How?
301 is that the requested resource has been assigned a new permanent URI and any future references to this resource SHOULD be done using one of the returned URIs. 302 is that he requested resource resides temporarily under a different URI. Since the redirection may be altered on occasion, the client SHOULD continue to use the Request-URI for future requests. This response is only cachable if indicated by a Cache-Control or Expires header field.
Status 301 means that the resource (page) is moved permanently to a new location. The client/browser should not attempt to request the original location but use the new location from now on.
Status 302 means that the resource is temporarily located somewhere else, and the client/browser should continue requesting the original url.
See Peter Lee's answer.
Mostly 301 vs 302 is important for indexing in search engines as their crawlers take this in account and transfer pagerank when using 301.
I could repeat everything in there, but it states it quite clearly ;)