A futures contract is an agreement to purchase or sell something at a predetermined price at a predetermined date in the future, regardless of how the price changes in the meantime. Expiry dates must apply to futures contracts because they represent the date on which the asset must be delivered at the agreed-upon price under the contract terms; however, in practice, this is of little importance to traders because most futures contracts are settled before the actual expiry date.
People occasionally tell you that futures are unsafe because of the gearing or leverage. However, if you handle trading as a company, you don't sit back and let your losses pile up. Whatever you're trading in, you get out of a losing position. The benefit of all that gearing is that your gains are multiplied, which every trader desires.
Futures contracts are traded on major exchanges, although they are occasionally subject to skipped deal executions, whereas CFDs are transacted with typically market makers brokers. Some claim that this means they manipulate the pricing, but given the enormous popularity of CFDs and the competition among brokers, this should not be an issue in practice. When all else is equal, futures are the most liquid option to trade commodities and typically feature narrower bid-offer spreads than CFDs.