I would go for a WebTemplate based on Blank Site (or, I usually base my templates on STS#0 or STS#1). That way you get full control over which features that will be enabled.
You could activate your composed look with the help of a feature too (with modules containing the elements needed, and a feature receiver with code that makes sure to configure what you need to configure).
About publishing: Once you have enabled publishing there is no way to turn it of completely. I would not activate it per default since it, among tons of things, creates a lot of lists and libraries that may confuse users. So if you are not using any features from the publishing framework, keep it off.
OR, if it is truly minor changes, like the things you mention above, I would probably do the following:
- Create a blank site from GUI
- Do the modifications needed, like apply branding and disable / enable features
- Save the site as a Site Template
- Activate the site template solution
Now the users will be able to choose your Site Template in Self service site creation (This can be done directly in production environment and you could also possibly teach some super users to create new templates in their own).
The downside with this approach is that Site Templates, in my experience, are difficult to move between different environments. Also Site Templates can not be based on sites having Publishing features enabled, so if you need that Site Templates is not an option