I understand that wallets are essentially like keyrings (storing/managing/possibly even generating keys).
Ive seen that they can (like Exodus' "Receive" button) generate new bitcoin adresses (which is in my mind roughly equivalent to a public key).
1)
Does this mean they generate a completely new keypair (including private) for each time you "receive"?
Or is it (not sure if this is possible) a new address which is linked to an existing private key?
usually the key pair has already been "generated" because most wallets use hierarchical deterministic seeds now. but the wallet UI won't necessarily show a new address until you request it.
the new address is not linked to any previously generated private key. with HD wallets, all key pairs are derived from a single seed, though. sometimes people confuse the "seed" (which all key pairs are derived from) with "private keys" (from each key pair).
2)
If it was a new keypair each time and you woud be receiving lots of transactions you'd end up with hundreds of keypairs/addresses with small amounts of coins "in" them.
Would this not make sending coins an insanely difficult task or at least -transaction fee wise- very expensive (you'd have to make hundreds of small transactions)?
addresses/public keys do not matter at all in this respect. every output you receive is an output, no matter what address it is sent to. sending outputs to the same address doesn't change anything. 3 outputs in 1 address is no different from 3 outputs in 3 addresses, from a transaction fee standpoint.
3)I noticed the transaction fees with the wallets I looked at are quite high. Is there a software wallet (not mobile only though - I dont trust smartphones
) which lets you actually chose what you are willing to pay? (I totally don't care if my transaction takes a few days to get picked by a miner and processed.)
electrum lets you choose fees manually..... that's my preference. i generally check
https://bitcoinfees.earn.com and then construct my transaction based on that.
good luck!