-j4 says use up to 4 processes in parallel. Make has a jobserver that does parallelism safely with respect to the dependency graph. So for example, even if we have workers to spare, it won't try to build all.min.js until all of the .ugly files have finished building.
The %.foo : %.bar things are pattern rules. [1]
The $<, $@, and $^ things are called automatic variables. [2] They correspond to the first input file for a rule, the target file for a rule, and the complete list of input files for a rule, respectively. Cryptic at first but really handy.
There's a standalone script for UglifyJS. [3]
[1] https://www.gnu.org/software/make/manual/html_node/Pattern-M...
[2] https://www.gnu.org/software/make/manual/html_node/Automatic...
[3] https://github.com/mishoo/UglifyJS2/blob/master/bin/uglifyjs