Setting up geocoding
Your questions are not provider specific and you didn't specify one, but if you are using Google, it looks like the documentation you reference is a bit out of date with regards to Google's requirement for API keys: the use of API keys was optional until changes recently went into effect in the Google Maps Platform. This month's Cividesk newsletter includes an article that details what needs to be done for Google APIs to continue functioning properly - you'll find that article HERE.

That said, I copy and paste your questions and intersperse them with my responses below and include links to resources where you should find more detailed instruction:

Q1: How long does it run each time it is triggered? (max exec time?)

A1: It depends on  how you run the cron - the answer to THIS question should point you in the right direction.

Q2: Can I throttle the amount of contacts it attempts to code for each run? I want to avoid it running non-stop and killing the server by overloading it.

A2: You will find job parameters detailed HERE (including throttle and limiting to specific contact IDs).

Q3: I don't like to have more than one street address field (disabling supplemental 1,2,3) as users do not consistently input the their data right if you give them too many options. However, is it okay to include APT numbers etc in the main street address field and it still geocode reliably? I've done a few tests on records but not with a large sample.

A3: The basic rule of thumb is to specify addresses in accordance with the format used by the national postal service of the country concerned. Additional tips on address formatting can be found HERE. CiviCRM includes an optional plugin for interfacing the the United States Postal Services (USPS) Address Standardization web service, details of which you will find HERE.