cut
usa um arquivo, ou stdin, e o switch -c é para caracteres e você provavelmente deseja campos, com separadores de espaço. Além disso, você tem que colocar o segundo argumento do cp entre aspas. E você precisa especificar -c5- para se livrar do:
while read -r line || [[ -n "$line" ]]; do
cp $line "/home/user/Desktop/Music/$(echo "$line" | cut -d ' ' -f3-)"
done < filelist.txt