So I've learned that every time when I want to receive BTC to my Ledger Live a new address will be generated. Now I know that this is Native SegWit address and it saves on transaction fees. The question is, how does this work?
Magic
All modern wallets work like that to preserve some privacy with good address management.
One seed phrase can generate almost unlimited number of addresses, but you can still use previous address for receiving coins if you are getting regular payments from same source.
btw Ledger Live is bad piece software and I wouldn't use it anymore.
I always thought that an address is public key and since I have a private key, I can spend the BTC on that particular address. Now it turns out there could be many addresses on the same wallet. Is there any resources I can read or watch that explains how this works?
This is outdated model that is not used today, except maybe with paper wallets.