Right way to download file from source to destination

There is no need to use the WP filesystem API if you are trying to access directories to which the web server has full access. It is needed mainly only when you want to write to directories which have limited access like the plugin directory. From that point of view the two snippets are the same.

What you are potentially doing wrong is trying to access a remote resource with file API. Your first snippet will fail on some hosts and I am totally not sure if the WP filesystem API will work.
A more robust way is to use the wordpress HTTP to get the content of the file with wp_remote_get and save it to the uploads folders.

… last thing don’t do copyright infringements, too many people payed too much for such things.