Now, why is THAT working without "too many arguments" but the wildcard command didn't?

Because cp is told to do an archive copy (preserve time/dates, owner etc) of a directory - this includes, recursively, all subdirs and files inside the directory. The filenames are however not passed to cp on the command line, it digs them out itself, while running. It is the length of the command line (or rather, number of arguments) that cp choked on in the /* case, in this case it only has two arguments, source and destination directory, since it is also told to recurse into the directory it looks inside the directory and copies everything - without you having to spell out each file.

/Michael
_________________________
/Michael