For question 3, the version that gets both: use the first row as a prompt, not as blank, and never as a value.
<select required>
<option value="" disabled selected>Choose a country</option>
...
</select>
Selected so it shows, disabled so it cannot be submitted, empty value so validation catches it. The user sees an instruction rather than an empty box, nothing is guessed on their behalf, and the required check works.
And the genuinely both-benefits version for facts where you have a strong signal: pre-select, but make it visibly a guess. Detect the likely country, select it, and put a short line under the field saying you have guessed and they can change it. That gets you the low-friction path for the majority and an explicit invitation for everyone else, which a silent default never gives.
The part that matters: record whether it was confirmed. Then your data can tell the difference later.