Can you send bitcoins together from the same wallet if they have been received via various different addresses?
A bitcoin transaction can have one or more inputs, and one or more outputs. For example, here is a transaction with 1 input 3 outputs, and here is one with 3 inputs 1 output. 

I think you are confusing the terms public key, and private key. A wallet is a collection of keypairs (private keys and public keys), and each one can be used to create a unique bitcoin address. So if you have three different input transactions to three different bitcoin addresses, each of these will be spendable using it's own private key. 

Your wallet will sign the transaction with each of these three keys, and the rest of the network can validate the signature by comparing it to the public key associated with each input (despite never knowing the private key!). To learn more about how this works, look up some info on how public key cryptography works, it is a useful cryptographic tool employed in many systems, not just bitcoin.