Your question contains many misconceptions.
Yes, it is perfectly fine and safe to generate private keys and their corresponding addresses completely offline and not connected to the internet. In fact, people recommend that you do this because it is safer than doing it online.
There is no central database (Bitcoin is decentralized) where you must register a private key and address. That is not how Bitcoin works, and there is no need to do this. You don't have to send your address or private key to someone else or register it with the blockchain. In fact, if your private key is sent to someone else, then that person can steal all of your Bitcoin.
If some site or software must be online to generate keys and it is sending the keys to the site owner, then DON'T USE THAT SITE. The owner is trying to scam you and steal your private keys, which means they can steal all of your Bitcoin.
Private keys can be safely generated offline because of mathematics. A private key is really just a very large number. The cryptography that Bitcoin uses defines a private key to be any integer between 0 and 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141, that's a lot of private keys. Any integer in that range is a valid private key. So Bitcoin Core and other key generation software will just generate a random number that is within that range. Because the range is so large, and because (in theory) good random number generators are being used, the probability that a private keys that you generate were also generated by someone else is so small that it is, for all intents and purposes, 0.
So any software where you can import that private key will recognize it as being valid and correct so long as the private key is within that range. From there, the public key can be computed, and from that, addresses.
You don't need to be online and register any addresses you create either. That is because the blockchain does not actually use addresses. It does not need to be able to find your address either. On a low level, the blockchain uses transaction outputs. When you create a transaction, it spends transaction outputs from other transactions, and creates new transaction outputs. These outputs are composed of two parts - the amount, and a spending condition.
Addresses are just a human readable way to represent the spending condition. When you send Bitcoin to an address, what you are actually doing is telling your wallet software what the spending condition for one of the outputs should be, so it will create a transaction with an output with the appropriate value and spending condition.
With most addresses (the kind that are associated to a private key), the address contains the hash of a public key. That private key for that public key is held by the person who gave you that address. When that person spends the Bitcoin you sent them, they consume the output you sent them and provide the public key and a digital signature. So the spending condition is that the spender must provide the public key whose hash matches the hash specified in the output, and a valid digital signature created using the private key corresponding to that public key.
So, addresses are not really identifiers or accounts that the blockchain needs to lookup, rather they are just a human readable way to specify the spending conditions for outputs. Thus there is no need to register addresses with anything. Furthermore, the blockchain doesn't even care what the spending conditions are. They could be completely invalid. The spending conditions are really just a blob of data and they are not checked in any way when a transaction is created. The spending conditions are only checked when the output is spent.