2. I also want to know how many addresses I can watch until things start to get slow, or worst... the program start to crash?
It's partially based on your RAM capacity since Bitcoin Core load entire wallet.dat file to RAM[1].
My goal is to monitor a few addresses but without using a third party service. How do some blockexplorers provide an API to watch addresses and notify you (Webhook) when funds are sent to or from the address if -walletnotify is not something one can use?
Most block explorer do more than rely on Bitcoin Core (or other full node software). They build their own software with more complex database (e.g. adding address index) and feature.
i don't think it make sense to keep checking for the address balance 24/7 and then notify the user of the last transaction. Or does it
In first place, IMO it's more efficient to run self-hosted blockexplorer or Electrum server rather than use Bitcoin Core watch-only wallet to check address balance.
[1]
https://bitcointalk.org/index.php?topic=5400538.msg60252176#msg60252176