As indicated in my previous post, we recommend that you use _total_solve_time, except if you are running a solver that executes on multiple cores in parallel, in which case we recommend _total_solve_elapsed_time. So for example if you are solving a linear program using the simplex method then usually that involves a single-threaded algorithm and you would use _total_solve_time, but if you are solving a mixed-integer program then by default the most popular solvers search a tree of solutions using multiple cores in parallel, and you would use _total_solve_elapsed_time. (When multiple cores are used, _total_solve_time gives the sum of times on all of the cores, which is not a good measure of efficiency.)
User time and system time are computer operating system concepts that are not specific to AMPL or optimization. Basically all CPU time is divided into user time and system time, as explained at
http://stackoverflow.com/questions/5688949/what-are-user-and-system-times-measuring. The sum of these times is _total_solve_time which is the most useful.