The trick to this is remembering that any path that is specified in a file node of the DNN module manifest is relative to the module's path. So, if you have specified the following in the manifest:
<dotnetnuke version="3.0" type="Module">
<folders>
<folder>
<name>WESNet_Centers</name>
<foldername>WESNet\Centers</foldername>
. . . . .
<files>
<file>
<path>..\..\controls</path>
<name>mycontrol.ascx</name>
</file>
. . . . .
</files>
</folder>
</folders>
</dotnetnuke>
then mycontrol.ascx should end up in the website's control's folder. As far as copying entire folders and their contents, I have not tried this but believe it can be accomplished by placing the folders and their contents into another zip file and including it in a <resourcefile> node:
<dotnetnuke version="3.0" type="Module">
<folders>
<folder>
<name>WESNet_Centers</name>
<foldername>WESNet\Centers</foldername>
<resourcefile>MyResources.zip</resourcefile>
. . .
What I don't know is if you can specify into what folder this resource file will be unzipped. The above DNN manifest would unzip it into ..\DesktopModules\WESNet\Centers. There does not appear to be a way to specify its destination path.
As for the .dll assemblies, simply specifying one in a <file> without a path specification will place it in the website's \bin folder.
When I recently uploaded a custom user control (for use in several modules) to a DNN site, I was not sure if it should be placed in the website's \controls folder or if the \controls folder should be reserved for DNN core controls only. I could not find any standard for this, but finially decided to place it under \DesktopModules\WESNet\controls\imageupload.ascx as I thought it might later become a problem if the core folder structure was updated.