rsync copies files from one directory to another. So long as your command can see the source and the target and the target is as large or larger than the source it doesn't matter where it was originally created.
However, the main use of rsync is transfer from one server to another - if you're just copying to a USB device then physically moving it to another machine you might have just as much luck using a recursive copy (cp -r) rather than rsync.
Similarly diff checks files beneath a directory if both the source and target are directories but is not recursive unless you give the recursive flag (-r or --recursive).
Recursive means the directory and all subdirectories and files below it. Many commands will do that but often require you to put in a flag for it to insure you mean to do it.
Most UNIX/Linux commands have manual pages (a/k/a man pages) that you can get more information from so it you want more detail on the cp (copy) command type:
Or the diff command:
Or the rsync command: