Before the shell executes your command line, it replaces the splat (*) with a list of all the files (full pathname) in the current directory. One of them causes cp to fail, most likely due to restrictions on your non-root user account. Try a method that does not require wildcard expansion, like:
cp -r folder1 folder2
Keep in mind that with *NIX there are often many ways to accomplish the same thing, some more appropriate than others, depending on what you are trying to do.
For your second question, do a 'man' on exec to see the manual page (man exec). 'exec' executes "./myscript" in place of the current shell, which terminates.
"source" reads commands from name. source commands may be
nested, but if they are nested too deeply the shell may run
out of file descriptors. An error in a sourced file at any
level terminates all nested source commands.
exec executes, source reads from. note the waring in the "source" description about nested commands. Perhaps this is what you ran into.
Gary