Elapsed time is the time as on your wall clock: How long a process has been running since started.
CPU time is the time the CPU has actually spent processing this very process: The accumulated time slices added together.
Here is a chapter from the book Linux Kernel Development which gives a brief introduction into Linux kernel scheduling and how processes get split up in time slices.
Håkan