xargs takes strings from stdin and a command line on its own command line. It runs the command line using the strings from stdin as arguments to the command line. It's basically doing indirection. If you have a list of filenames (such as
find produces) you can performa operations on the individual files (or their contents) with
xargs. Like getting a top-20 word frequency list from a number of text files:
find . -name '*.txt' | xargs cat | tr -s '[:blank:]' '\n' | sort | uniq -c | sort -k1.1nr | head -20
I'm not sure it's worthwhile to perform your task from Question 1. I'm certain that it can be done, but why bother? And that's the answer to question 2: there is no advantage either in performance or clarity of intention.
In general, the advantage of using
xargs is that you can do elaborate things to decide which file names to put on its stdin. Your
find could have time-of-creation added to it, or more than one name glob, or whatever. Just having a static list of filenames negates any advantage you might get from
xargs: you'd be better off using
cat or running the command
xargs would run in a loop.