I am still trying to get my head around wallets and the way bitcoin works.
If I download wallet software such as "bitcoin core", can I create numerous wallets within this or is it just one wallet?
Some wallet software makes it easy for users to keep track of multiple wallets.
Bitcoin Core does not.
It is possible to maintain multiple wallets with Bitcoin Core, but it requires some technical knowledge, and some care moving files around.
From what I have read, you can have numerous addresses in one wallet.
Correct.
And addresses are made from a public and private key combination?
Addresses are calculated from a public key which is calculated from a private key.
Is it possible for two people to have the same public key but a different private key of does each private key always generate a unique public key?
With the most common types of transactions, each private key results in exactly 1 public key. Each public key results in exactly 1 compressed key bitcoin address and 1 uncompressed key bitcoin address. Using Pay-to-script-hash (P2SH), and other scripting techniques, it is possible to create some more complex transaction types, but I don't think this is what you are asking about.
Say I have a wallet with 4 addresses in it: With 5 bitcoins assigned to each address. So my wallet total is 20 bitcoins. I want to buy a loaf of bread that costs 12 bitcoins (a bit on the expensive side, i know). I go into my wallet and click on the 'send' option. I type in the public key that the bakery has provided me with and send 12 bitcoins. Is this possible?
No. The bakery will most likely not provide you with a public key. They will almost certainly provide you with a bitcoin address.
You CAN type the bitcoin address that the bakery provided you with and send 12 bitcoins.
If so, how does it decide which address' to take from? Does it take evenly from each address or does it start from the 1st one and when it has filled its order, it stops.
This is known as a
Knapsack Problem.
Bitcoin Core has its own algorithm for deciding which bitcoins to spend.
Please note that that your wallet doesn't actually store "balances". Unless you received exactly 4 transactions each valued at exactly 5 bitcoins, your wallet is probably made up of MANY smaller outputs. Each and every transaction that you receive is independently represented and independently spent in its entirety.
So if there was 15 bitcoins in the 1st address, it would stop there?
It might, or it might chose bitcoins from other addresses. It will depend on the exact list of outputs that your wallet has received, and how long ago each of those outputs was received.
I watched a tutorial on how to paper store your bitcoins offline. And I understood he whole process. However, I want to cold store my bitcoins on a usb stick. So I was thinking instead of printing the codes, just save them on a notepad onto my USB? Is this the best way to do this, or is there a better way?
That should be fine as long as you are able to access that USB in the future. What happens if the USB breaks or is damaged? What happens if technology changes in the future and computers no longer have USB ports in them? If you do choose to do this, keep in mind that it isn't enough to just store the bitcoin addresses. It is VERY important to store the private key that is associated with each bitcoin address, otherwise you will never be able to spend the bitcoins.
If you wanted to split 1000 bitcoins between 1000 addresses, will you have to do there a way to only send once but have it split across 1000 addresses.
Yes.
Maybe if they are in the same wallet for example?
That wouldn't be necessary, but it would certainly make the process easier.
Finally, am I right in thinking, you don't actually need to download wallet software to receive bitcoins?
Correct. You just need software to generate a private key and the associated bitcoin address.
You will need wallet software of some sort to send bitcoins, and software makes it easier to keep track of multiple addresses (and their associated private keys) as well as all the transactions that you may have received.
generate a random address. Write this address down. Then give the public key to someone who can then send you the bitcoins?
No. Son't give them the public key. Give them the bitcoin address. Most software doesn't handle sending to a public key very well.
Also, it would be VERY important to also keep track of the private key that is associated with the bitcoin address. It's this private key that the wallet software uses in the future when you eventually want to send the bitcoins somewhere.
If this is possible, how could you then spend the bitcoins?
You would import the private key into some wallet software and use the software to create and broadcast the transaction.