The clearest explanation I’ve ever read on the difference between user and system elapsed time was provided by William Dunlap on [R-help]:
“User CPU time” gives the CPU time spent by the current process
(i.e., the current R session) and “system CPU time” gives the CPU
time spent by the kernel (the operating system) on behalf of the
current process. The operating system is used for things like
opening files, doing input or output, starting other processes, and
looking at the system clock: operations that involve resources that
many processes must share.
Although ?proc.time returns something similar, this description was a lot easier to understand for me.