When simplified a lot, Bitcoin address can be seen as a public / private key pair.
Wallet can contain several addresses. There is no relationship back from the address to an wallet - basically wallet is just a list of addresses known to you. Wallet also knows the private key to these addresses which it is using when you send Bitcoins out from a wallet.
Usually you publish your public part of Bitcoin address on a web page, so others can send Bitcoins to this address.
You can use the same address to receive multiple transactions. This is how people usually receive donations. They just publish their Bitcoin address on a web page. With some programming, you can generate a new address for every donation if you want to maintain more privacy.
Some Bitcoin wallets allow you to import/export addresses and their keys, so in theory you can move addresses to different wallet: https://en.bitcoin.it/wiki/How_to_import_private_keys - however not all wallets support this, this is advanced operation and normally not recommended for a normal user. So if you want to migrate to a different wallet (service/software) I suggest you just start using it, send bitcoins from old wallet to new one, generate new receiving Bitcoin address in the new wallet and publish this address.