How does a full-node index watch-only addresses? I can import watch-only addresses into my full-node's wallet. I can start querying their utxos from that point onward.

Where are watch-only addresses stored and how does my node keep index of their balances / utxos?
If I want to backup and boot a new instance of my node will it retain the indexes associated with my watched addresses?
Is there a limit to how many addresses I can watch, will many make querying inefficient?
Where are watch-only addresses stored and how does my node keep index of their balances / utxos?

Usually the software creates a wallet file just like any other and stores information in that, except the wallet file will be missing private key information.

If I want to backup and boot a new instance of my node will it retain the indexes associated with my watched addresses?

Yes

Is there a limit to how many addresses I can watch, will many make querying inefficient?

Depends on your computer and the software used. There is no hard limit but the more there are the slower it'll be.