Разница лишь в том, что HTTP-код возвращается в браузер:
Разница в том, что если вы вернете код HTTP 301, в следующий раз, когда браузер попытается подключиться к URL-адресу, он напрямую перейдет на альтернативный URL-адрес (поэтому он больше не будет пытаться использовать старый URL-адрес).
С кодом 302 браузер все равно будет пытаться подключиться к URL.
Вы можете узнать больше о разнице в Википедии: