I don't purport to be an expert (quite the opposite), but here's what I've done after a little trial and error, in the hope it might be useful to someone:
1) Create an empty theme. Replace "mytheme" with the name of your theme. (NB: I believe you can create a theme extending another one, but I've just done it from scratch.)
2) Set the base theme you want to extend in the new theme's package.json by adding an extend property. For example, if you want to extend Neptune with your own colors and other changes:
sencha generate package -type=theme mytheme
3) Check the config.rb in your new theme. I'll admit I haven't even *tried* looking into what's truly needed or even used here, but I surmised the following might be useful, to set (a) the current directory, (b) where the resulting css will be output, and (c) what the output style will look like:
output_style may not be necessary, since it seems like the builder creates dev, debug, and minified versions anyway.
cur_dir = File.dirname(__FILE__)
css_path = $css_path = File.join(cur_dir, '..', 'build', 'resources')
output_style = :nested
4) Copy over files from the sass/etc, sass/src, and sass/var directories of the theme you are modifying to the corresponding directories in your theme as appropriate and edit. To keep things organized, the convention seems to be to use etc for general, theme-wide variables, and to put the rest into the appropriate files in var.
The way the pre-packaged themes are built, you can accomplish quite a lot just by changing the variables in the various files in var. You only need to put anything in src if you want to create entirely new classes -- say, an additional ui (skin, really) for a particular type of component (keeping in mind you can edit the existing uis as desired if you just want to change the default look), or the classes for a custom component type you've built.
You could write the var files from scratch, too, but I find it's useful to have the reference to which variables are set in the parent theme(s): I just delete the ones I'm not changing.
You can also dig through to see where those variables are used by looking at the corresponding src files of the parent theme(s). So, for instance, if you're extending the Neptune theme, look at the Neptune src files as well as the ext-theme-neutral files, which Neptune extends, and the ext-theme-base files, which ext-theme-neutral extends.
5) Once you've made some change you want to see, compile the theme. From the directory the theme is located in:
6) Test the look of the theme by opening up [theme-dir]/build/example/theme.html in Chrome/Firefox/etc. NB: you'll need to test some things, like grids, using your own app.
sencha package build
7) To test / use in your app, change app config / copy-and-paste css and image files and edit links as appropriate, depending on how your app is structured.