The first step of an account creation on https://stellarterm.com is to generate a key-pair. I can log in using the secret key - the service returns me the public key, aka my wallet account ID. It's possible to derive that number given the secret key, so that there is no need to log anything to the ledger yet. But then, how is that possible to send Lumens to that public key at this moment already? What happens if someone makes a mistake providing that public key? What is the way for the system to prevent such a mistake?
Accounts do not exist until they have received their initial funding with a CreateAccount operation.
A payment sent to an account that does not yet exist will fail. A valid payment sent to an account that has been created will succeed. The sender must ensure the account number is correct before submitting the transaction.