CPLD is Complex Programmable Logic array
FPGA is Field Programmable Gate Array.
CPLD is ROM based technology and FPGA is RAM based. Because of which FPGA needs external ROM to boot up after power on.
FPGA structure is more complex than CPLD. CPLD is fixed routings so delays are predictable. In FPGA routing is done by switching matrix so delays are not fixed.
Hope this might have given basic idea about both. For further info just search through eda board there are lots of posts regarding this issue