Where are new addresses stored? When a user generates an address using Bitcoin Core, is that address by default stored on the blockchain or will it only be stored after it is used in a transactions
will be stored only after any transactions occur ?


Wallet addresses are not technically seen in the blockchain until they are used in a transaction, but that does not mean that they have not been generated/belong to someone. A Bitcoin "address" is derived using the public key (and the public key is derived from the private key, using ECDSA) and are really used for simplicity and readability through Base58 encoding (imagine needing a user's full 32 byte public key!).

A private key can be used to derive a public key and likewise the public key can be used to derive an address. Due to the nature of hash functions/ECDSA, these values are "computationally infeasible" to reverse. Meaning you cannot take the address and obtain the public key nor can you calculate the private key given the public key.

As the wiki states:


  A Bitcoin address is a 160-bit hash of the public portion of a public/private ECDSA keypair. Using public-key cryptography, you can "sign" data with your private key and anyone who knows your public key can verify that the signature is valid.


Anyone with the private key necessary to meet the spending condition (scriptSig) of a transaction will have the means to spend it's output(s).