Start here:
http://we.lovebitco.in/how-bitcoin-works/bitcoin-addresses/ and read the following page also.
Bitcoin addresses traditionally are randomly generated, but they can also be generated by a random seed fed into a pseudorandom algorithm. This makes a
deterministic wallet, so that all addresses that will ever be in a wallet can be recreated by a backup of just the seed.
The only way someone will know a Bitcoin address of yours is if you give it to them. Many orgs use a single donation address, with the benefit/detriment being that others can see how much has been donated.
The safest way to offer a new address for each contribution is to pre-generate them offline, and have web site software simply give a new one to each donator from a list of addresses. Putting full wallet software online for a web backend requires incredible security precautions.