A contract for difference (CFD) is similar to a future. The difference is that a CFD cannot be settled by delivery. It an agreement to pay an amount based on the change in some number. This also means that a CFD can exist where the underlying asset is not deliverable.
For example, a CFD may pay £1 for every point an index gains (and charge £1 for every point the index loses). This means that it is possible to have CFDs on indices, natural phenomena (such as the weather) and anything else that is measurable.
It is common practice to call many CFDs futures: e.g., an index future. Where the underlying is not deliverable the "future" is in fact a CFD. CFDs sold to private investors also sometimes called spread bets.
Options with a non-deliverable underlying asset are also closely related to CFDs.
These contracts can resemble insurance contracts (in that they can transfer the risk of an event occurring) and cat bonds. A good example would be the purchase of CFDs or options on weather by a company that has a business that depends on weather conditions.
A spread bet is legally different from a contract for difference, and is taxed very differently, but it is very similar in its effect.
Exchange traded contracts for difference
A contract for difference may be traded on a stock exchange (this is another key difference from a spread bet). This tends to make spreads narrower and liquidity higher, but, of course, broker's commissions will reflect the cost of accessing the market, so it is not necessarily the cheapest option.