A 301 redirect is an HTTP status code that tells a browser, and any search engine, that a URL has permanently moved. The browser follows the redirect to the new address; the search engine updates its index to use the new URL in place of the old one. The 302 status code is its temporary counterpart — same browser behaviour, different signal to search engines.
I reach for 301 redirects most often during three jobs: changing a permalink structure, consolidating two domains into one, and cleaning up the long tail of legacy URLs after a content audit. In all three cases, the goal is the same — preserve the link equity that the old URL has earned, and avoid sending visitors to a 404.
The usual rule of thumb is that a 301 passes most of the ranking authority of the old URL to the new one. Google has stated publicly that they treat permanent redirects as a signal to consolidate signals, and in practice I rarely see a measurable drop after a clean 1:1 redirect map. The drops I do see are almost always from sloppy mapping — many old URLs pointed at a single homepage, redirect chains, or inconsistent handling of trailing slashes and protocol.
On WordPress, the cleanest implementation depends on the host. WP Engine and Cloudflare both handle redirects at the edge, which avoids the PHP overhead of a plugin like Redirection. For smaller sites where edge rules aren't available, Redirection or a hand-edited .htaccess file is fine — the trade-off is convenience versus a small per-request cost.