The old machine has couchdb version 2.3.1
The new machine has couchdb version 3.3.1
Is the old machine meant to be upgraded to 3.3.1 before the backup? Or is the 2.3.1 backup going to be compatible / migrated when it's transferred to the new machine?
The 2.3.1 backup should be entirely compatible with 3.3.1 as well. This is the recommended upgrade procedure. For example in 1.9. Upgrading from prior CouchDB releases — Apache CouchDB® 3.3 Documentation you can see that they recommend simply stopping couch and upgrading it in place, and starting it again. In your case it sounds like it'll be on a new machine, but the same concept holds: the data from 2.3.1 should be compatible with 3.3.1.
As in any major maintenance, make sure you keep a clean copy of the original data in case there are any issues with the upgrade and you need to roll back.