Understanding copying package files
I'm not sure about #2, but I suspect #1 is due to trailing slashes in the file path. cp -Rp /path/to/Application.app /path/to/destination will copy the entire package, while cp -Rp /path/to/Application.app/ /path/to/destination (note the trailing slash after the source) will copy just the contents.
BTW, you should use cp -R instead of cp -r -- in some implementations of cp they're the same, but in some versions the lowercase option has ... oddities. According to the man page on OS X:

COMPATIBILITY
Historic versions of the cp utility had a -r option.  This implementation
supports that option; however, its use is strongly discouraged, as it
does not correctly copy special files, symbolic links, or fifo's.