Sorry it took so long.
On the CSS and JS files, here's an example from the ClassExtender code:
$cssFile = $this->modx->getOption('ce.assets_url', null,
MODX_ASSETS_URL . 'components/classextender/') . 'css/classextender.css?v=' . $this->version;
$this->modx->regClientCSS($cssFile);
ce.assets_url is a System Setting containing the path to the development location of the CSS file:
{assets_url}mycomponents/classextender/assets/components/classextender/
That way, on my machine, ClassExtender will use the CSS file from my MyComponents directory. When ClassExtender is installed on someone else's machine, that System Setting won't exist, so it will use the installed css file at assets/components/classextender/css/classextender.css.
Important: When you create the System Setting, put it in the core namespace, so MyComponent won't include it when you run ExportObjects.
The version is tacked on to the end for "cache-busting," so that when a new version comes out, the cached version of the older file won't be used.
It's the same for JS files, except that you use $modx->regClientStartupScript() instead of $modx->regClientCSS().