address someone = msg.sender;
msg.sender refers to the sender of the transaction/call.
address someone = msg.sender; Means that we store the sender address in the someone variable
someone.transfer(10); This is the equivalent of
This function allows to send 10 ether from the smart contract to the sender address.
EDIT for explanations:
A smart contract is not very different from a "normal" address. It just can do more stuff (what you allowed it to do in the code).
As a consequence, smart contracts can own ether (to be more precise, their address can), and they can behave like normal addresses. So a smart contract can send Ether to an address and receive ether too. However, you can tell the smart contract to do more stuff when it receives ether, check the keyword
payable for more information.
To answer the question in the comment: no, this does not mean the smart contract owner(1) sends ether, but the contract itself, from its own ether balance.
(1) If this makes sense. A contract does not nativaly has an owner. This concept is only in the code of the contract.
However, I don't understand why you would duplicate the msg.sender address storing it into a variable. Optimisation is very important in solidity, so use msg.sender and don't store it anywhere as it already is :)