copyFromLocal is similar to put command, except that the source is restricted to a local file reference.
So, basically you can do with put, all that you do with copyFromLocal, but not vice-versa.

Similarly,

copyToLocal is similar to get command, except that the destination is restricted to a local file reference.
Hence, you can use get instead of copyToLocal, but not the other way round.

 cp is used to copy files between directories present in HDFS