Change addresses are no different than other addresses, except that they do not get shown in the UI, i.e. they are not visible in the recent transactions column. Just like all other addresses they will be checked for new balances whenever a new block is added to the database.
BitcoinCore keeps a number of unused addresses on hand of the size of
keypool. The standard setting is 100 keys.
Whenever you create a transaction that doesn't spend a previous UTXO completely, the change gets sent to one of the previously unused addresses in the keypool, and a new address gets generated in the back of the keypool, to keep the number of unused addresses constant.
Likewise, when you request a "new receiving address" the first unused address from the
keypool is popped, and a new one is generated and pushed in the back.
Even before the addresses are visible, the addresses are stored in the
wallet.dat allowing you to create backups only every once in a while. (Well, you should at least every
Note: The keypool will only be refilled if the wallet is unlocked.