Alright, I appreciate that you're all my seniors here, but that is also part of the crux. This is an inherited web server, and while it's not a particularly complex setup, I don't know which minor customizations might be in place.
In that case, upgrades are LIKELY to be less painful than a reinstall. Because if you do a reinstall, you need to EXACTLY KNOW which minor customizations are place.
Why is upgrading even possible? You're making it sound like the feature is useless.
Upgrading is extremely possible. As I mentioned on this forum before: I've continuously used FreeBSD on my server machine for about 12 of 15 years. I've only re-installed twice. Once, because I was lazy and had skipped 3 or 4 major versions, and at that point upgrading was too tedious. The second time because 32-bit x86 mode was no longer supported, and I had to switch to 64-bit mode, which requires a reinstall.
If I had upgraded to each major as they were released, would that have been any better? If yes, why?
It would have been exactly the same as what you are going to start now, except the total amount of work would have been distributed over many years. Actually, let me take that back: Doing all the upgrades at once is more efficient, because you get into a rhythm, and only need to do serious testing once at the end. You can also skip upgrading / re-installing packages until the very end, and that's typically where the trouble happens (the base OS is incredibly reliably to upgrade).
and spend a couple of minutes merging some configuration files.
See below ... sometimes "merging some configuration files" is not as easy as you think,
I have already tested the upgrade steps on a cloned machine, and it seems to work fine afterwards.
In that case, you're winning!
I didn't realise reinstalling packages was optional. ... I would just like to know whether I need to perform this step for the intermediate version 13, but it's sounding like the answer is no, then.
Don't need to. I wouldn't waste my time on it.
(before you do the upgrade, be smart and get yourself a list of all currently installed packages and puit it somewhere you can access it during the upgrade / reinstall.)
ABSOLUTELY, and with version numbers. Not just "python and a lot of little python things", but an EXACT list of each package name and version. I've had cases where packages change name!
- fixing all necessary configuration changes (example: apache config files - format is the same, but which directives you need to have in there to get a config to work changes with at least some major versions)
That is exactly the example I was going to give! It bit me this week. I have two FreeBSD servers, and because I'm super busy, they are right now different versions (I know I know, need to work on it). One Apache still uses "Order Deny,Allow; Allow from all"; the other now needs to use "Require all granted". The syntax for using environment variables in Allow/Require clauses has completely changed. I spent half a day until I had it back to work, what a pain. In particular if you didn't set up the machine, or if it was so long ago that you don't remember why it was set up that way, these kinds of things can be time sinks.
BUT: This kind of problem will get you exactly as badly if you reinstall, and hope to just copy your config files over.