Here is my best guess as to what the browser does when it receives a request for each HTTP redirect code:
301 (permanent): browser may cache redirect info, search engines may update their info, not guaranteed.
302 (temporary, default for PHP header/Location): different browsers may do different things.
303 ("other"): browser uses GET method instead of POST during the redirection request.
307 (temporary): browser must use same method to redirect, search engines must not update their info.
308 (permanent): browser must cache redirect info, search engines must update their info.
I think all these redirects cause browsers to reload the target page and make a new browser tab history entry (history entries can be deleted using history state functions).
Please post corrections in comments and I'll update.