You often need an account to do something meaningful (getAccounts())
You often want to get an idea of how much it will cost to send your transaction (estimateGas())
If you want to interact with smart contracts like crypto kitties, lossless lotto, compound lending protocol you need to load it up into your web3 lib (Contract())
If you want to send a write transaction or interact with any way that changes the state of the chain, you want to send a transaction (sendTransaction() although sendRawTransaction() is one I like better)
If you want to think in ETH but operate in the smaller units of ETH called Wei - transaction cost is calculated in GigaWei IIRC - you would use (toWei())