I was watching a talk by Vitalik in DEVCON1 in which he says code can do three things one of them being code can send ETH to other contracts.
Yes, contracts can send ETH to both contracts and Externally Owned Accounts.
Yes, Contracts (Solidity code) can be used to send and receive ether from externally owned accounts.
Solidity offers three methods to send ether from contract:
Also, you can send ether to contract using Fallback Functions