all funds are tied to a Private Key on the blockchain.
If you "generate" a wallet, on for example myetherwallet.com, you get the Private Key(with the private key = full access to your funds), and a Public key(the one you receive funds to).
If someone gets your private key, you can lose everything.
If you lose your private key, noone can help you.
The public key is what you withdraw to, from exchanges for example, or if you receive a payment from someone.
For ETHEREUM(only, that is also ERC-20 tokens):
MyEtherWallet and other services are just an UI to interact with the blockchain, they don't hold your funds and can't help you if you lose your key.
So if you do a transaction via MyEtherWallet, you first enter your Private Key, then you "log in"(not actually), and you enter what address to send to(for example, your wallet on an exchange).
Your Private Key is used to Sign the transaction, so that's the only way to prove that you are the owner of the funds.
However, MyEtherWallet does help you setup some stuff like a Recovery Phrase you can use to recover your private key(a set of words that equals to your key).
Easiest = use an exchange, however it's not safest, the safest is to have an hardware wallet I think, there's also other ways, and you could potentially just use another OS/computer that is 100% clean and Only use it to sign transactions.
All wallets are the same thing in the end, just a way to sign transactions on the blockchain using your private key.
However, if you have a virus and enter it on MyEtherWallet, you lose your key.
If you have a Hardware Wallet, for example a Trezor, your private key is generated in the device and never leaves it, so the only way to steal your funds is if they get access to your Device, OR the recovery phrase.
An exchange wallet is just a wallet that an exchange holds for you, but you don't get the private key, only the public key.
So if the exchange wants to, they could just take all your funds.
A SmartContract is not something you need to use at all
There are different blockchains, an Ethereum wallet does Not work for Bitcoin, but the steps are similar, in the end decentralization = noone can do anything with your funds, but noone can help you if you lose them.
I suggest getting a hardware wallet, as I mentioned trezor(there's also ledger nano which is popular), have built in support for Bitcoin, Ethereum, Litecoin, and a few others, so you can safely store all your funds on that device.
In a way, you can think of the Public Key as a Username, and the Private Key as a password.
Other wallets can send funds to your Public Key(username).
The only way to send funds From your wallet, is with the Private Key(password).
With the difference that Noone can help you if you lose your key.
So:
if you deposit money to for example Coinbase, and buy Bitcoin, then they generate a wallet for you.
You don't get the Private Key, only the Public Key, but their website allows Your account to send funds From that wallet.
However, as I wrote earlier, they can logically be hacked, or just take your funds if they'd like to.
If you bought Ethereum, you could setup a wallet on myetherwallet.com, go to Coinbase.com, buy coins,
click "Send"and enter your Public Key.
Coinbase would then transfer your Ethereum to your Public Key.
Once that happens, the funds is 100% in your control. the only way to lose them, is if someone gets your private key, or you lose your private key.
If you would like to send back your Ethereum to coinbase to sell it, you'd login via for example MyEtherWallet.com, check Coinbase "Receive" address, insert that as "To" on MyEtherWallet(MEW), and send.
This goes the same for most coins, but there are some wallets like wallet.btc.com(I think) who actually has access to your funds...
in the end, if you think you have a secure computer, or you have a hardware wallet, etc - go get your 100% own wallet.
if you are a noob, it's easier to keep it on an exchange, but you must understand the risks.
Also, a SmartContract is as the name suggests, a contract that is smart because it is self-executing, it's tamper proof etc
right now, contracts are limited to their individual blockchain, as there's no reliable way to get outside data input(there's some projects for this)
a simple example could be that a SmartContract code says, when someone sends 1 ETH to it, it will send back 10 Bla-tokens to that address(since you can create tokens on the ETH blockchain, and there's smartcontracts, all the data needed is available to the contract - it knows if you send 1 ETH, it knows who sent it, so it can send 10 tokens back).
In the future, one can imagine SmartContracts to do almost anything, they are self-executing, trustless, cheap to power, verifiable for both parties ..
a quick and not so far away example as releasing money to one party once a certain type of outside information is confirmed,
such as shipping information or, some type of betting, or financial market data, etc
but for now you don't need to worry about that, just need your wallet, a Private Key to send from your wallet and a public key to Receive money to your wallet.
They come in pairs, and you can use the same as long as you want.
bitcoin, ethereum etc blockchains are publicly viewable, check for example etherscan.io, where you can enter Any Public Key to see all transactions done by that address, aswell as seeing all funds tied to the public key.
One final thing: as said, a private key is technically 100% yours aslong as you don't lose access/someone gets it, but
even if you don't have a virus there's lots of phishing stuff, for example myëtherwallet.com(just an example, see the ë) would be a copy of myetherwallet but that steals your key.
if you have Any amount that you care about, like more than $100 or maybe $500 etc, get a hardware wallet, they're cheap considering what they do.
the private key Never leaves the device, so you could access your funds using a pc full of virus, doesn't matter - they can't get access to your private key.
However, they could technically edit the address you send to, but that's why trezor/ledger(I think) has a display that confirms the address.