I would like to know if some open source wallets like Electrum have their own servers to do that job or if they work with the public nodes of the bitcoin network.
By default Electrum wallet connect to several public Electrum server.
I'm also interested to know if there are any hardware wallets that do that.
It depends on which wallet software do you use to manage your hardware wallet. For example, Ledger have option connect to your own Bitcoin full node.
If not, I would like to know if there is a way to check the balance of an address using the btc network and not a blockchain explorer, for example with some node calls running btc core.
Bitcoin Core doesn't have address index, however you can connect your hardware wallet to Bitcoin Core.