CPLD and FPGA
The main difference is the amount of resources available.
A CPLD offers some combinatorial logic and few tens/hundres of flip-flops. The number of inputs/outpus is also reduced.
CPLDs are still used in the industry, they are a good solution for small problems, i.e. address decoding in a bus, simple sequencers, etc. CPLD's packages are small and do not need any other device for configuration (non-volatile techonology).
A FPGA is a device including many resources: flip-flops, look up tables (LUTs) for combinatorial, embeded dual-port ram, DSP blocks, high speed serial interfaces, microprocessors,...
FPGAs can embed a whole system (that is called SystemOn Chip).
SRAMs FPGAs are volatile and need a device containing its configuration.
It is very difficult to summarize, my advice is to start by counting the number of flip-flops you need unless you don't have a requirement such as mathematical processing, complex control and so on.
Anyhow, if you need any further help do not doubt in asking again.