When i send bitcoin to a site, which address is it coming from? For example, say 10 of those addresses have bitcoin on it... whether its 0.25 bitcoin or 0.01 etc.
Depends on what you choose in your settings. If your setting is priority, it will choose the oldest output first that can cover the entire send amount. If you choose privacy, the wallet will spend all the UXTO.
I recall when you send bitcoin to someone, they could actually see how much bitcoin you have? Is that correct? And if so, do they see what is your balance in that bitcoin address only? Or your entire electrum wallet etc?
Only the address that you're sending from.
So how could you send bitcoin from an address in electrum that has the smallest balance and very few history? Or you cannot do this? Because if you are sending it from an address that is used a lot, doesn't that mean they could see your entire bitcoin transaction history such as how much receive and sending and even current balance?
Go to address tab and right click and select "Send From".
Also i recall when i send bitcoin, sometimes bitcoin is deducted from one address, then some from another etc. So what happens here then?
The UXTO that you have from one address is insufficient to cover for the entire transaction. The client will then have to use inputs from other addresses to cover for it.