Does receiving multiple times to the same address reduce the tx size when sending money from that address?
I assume not, because transactions refer to other txes rather than addresses. But maybe there are still opportunities to optimize something away?
Reusing address does not reduce tx size, BUT
if you use P2PK instead of P2PKH you can reduce tx size considerably. Especially if you use compressed public keys.
When paying to an address with P2PK, you will pay to compressed public key which is 33 bytes. And 33 bytes is longer than the 25 byte bitcoin address used in P2PKH. So when paying to your public key you actually have to pay fee for 8 more bytes.
On the other hand when you use coins that have been moved to your address with P2PK you will NOT need your public key AT ALL in the out tx. So you will save 33 bytes for each unspent output. (or 65 bytes if you have an uncompressed key)
That is why it is a lot cheaper to use P2PK.
You can have both P2PK and P2PKH inputs in the same bitcoin address.
Is it a security risk? I don't think so. Yes, your public key will be visible, but currently cracking the private key from the public key is impossible. And even is someone could crack your private key from your public key, I am quite sure they would empty addresses with more coins that what you have.
For example, this address with 109203
BTC has its public key visible: 16rCmCmbuWDhPjWTrpQGaU3EPdZF7MTdUk
Very nice of them to "risk" their coins and being an indicator of when someone will crack ECDSA used in bitcoin.
In my opinion it is nuts to keep that much
BTC in one address. What if someone accidentally got an address collision with them?
P2PK is actually safer from address collisions that P2PKH. To be able to spend from P2PK input you have to use exactly your private key. There is only one of those. Paying from P2PKH input there are 2^96=79228162514264337593543950336 private keys that can be used. Finding one of them accidentally is that much more probable.