Refer to man cp for why the command is not working.
In short, If you provide two argument to "cp", it would copy the first file (arg1) to the second file (arg2) but If you provide more then two arg (your case), it expects the last arg to be a directory to copy all the files inside that directory. In this case, "123" is a file hence error.
You can probably use
for file in abc 123
do
head -2 $file > new_file
done