What are the main differences between off-chain, sidechain and state channel? And what are the use-cases of all of these?
I will try to summarize:
Something existing in the public blockchain.
Something existing in the different public blockchain with observable relationships between chains like bridges. Cosmos and Polkadot are projects for bridging data between public blockchains.
Something not visible on the public blockchain. But usually, inputs/deposits and outputs/withdrawals are observable in the public blockchain. Everything in the middle of input-output usually is not publicly observable. For example, 0x project allows traders to create limit orders without on-chain transaction by just signing order details. Market order executors will use this signature to proof to a smart contract that exchange is legal. As you may guess canceling of limit orders is made with on-chain transaction.
3.1. Payment channels
2-parties sign the latest state of the balances in the channel and can provide proofs and signatures to the smart contract at the end of the process. The main use case is micropayments, for example, you can pay for downloads per KB or pay for the vehicle per minute without fees for every transaction.
Also Lightning Network for Bitcoin as well as Raiden Network for Ethereum allow to pay over the hops and take fees. In the scheme
A -> B -> Cthe B is one who can forward funds completely offchain in a trustless manner and also charge fees.
3.2. State channels
Same as payment channels but not only for balances. Potentially could be implemented any 2-party interaction even chess and sea battle.
Same as payment channels but for multi-party interaction. Have a central operator who helps participants to interact. Have limitation to the ledger (usually as UTXO Bitcoin model) due possibility to proof to smart contract plasma operator's misbehavior.
I will try to explain in simple terms my understanding of these terms.
Off-chain transaction essentially means a transaction that cannot be verified by reading the blockchain. There is no way for the blockchain network to verify if that transaction has occurred or not because it is not recorded on the blockchain.
A side chain is essentially a branch of the main chain. This side chain can thus be processed and blocks can be added independently of the main chain. Side chains are usually created after marking certain output transactions in the main chain to be no longer processed in the main chain. These transactions and their children can only be processed on the side chain. This relieves the main chain of the load. Also you can use completely different consensus algorithms in the side chain.
State channels are basically a methodology of conducting a transaction. Here parties agree that they will conduct a transactions off-chain or privately for some time (this could be to avoid a huge transaction fee otherwise). The transaction is updated by the parties involved whenever there is a change privately till the agreed time is reached and then the final state of that transaction will be updated by broadcasting it to the blockchain network.
To understand the philosophy of state channels, you can read this: https://bitcoin.org/en/contracts-guide#micropayment-channel This is not ethereum, but it helps you get a comfortable understanding of how and why state channels are used.