I think we can do better than that by allowing them to make changes at any layer.
This is fine, but should default to the "highest" layer (character-specific etc), and if there are going to be more than two layers (baseline and changes) there should be an option to merge layers (i.e. if someone has made changes to the character-specific layer, they can move those changes to the class-specific layer). Personally I think there should only be two layers, only one of which is directly editable, since having multiple editable layers of configuration is just asking for confusion. At least include some clear indication of which layer is currently being edited, which is visible any time the user could be changing something.
That reminds me, one of my pet peeves is the random color control with ace config settings. It displays no actual values so there is little chance of picking the same color twice even if you intend to. It is in fact impossible to pick identical colors in some areas of 24 bit color space, and trying to do so with the tiny patches provided split up in both time and space under variable ambient lighting conditions just increases these areas. Likely the entire space is screwed as a consequence.
EnhancedColourPicker already provides numeric input as well as copy/paste functions. It does use the aging Ace2 framework, though, and has some annoying bugs (such as considering the alpha input as a transparency level instead of a opacity level, so entering 1 makes your color 0% opaque and 0 makes your color 100% opaque). It also creates a lot of unnecessary globals. I've been meaning to rewrite it. Maybe I'll do that...
If you want to do this, I think you should avoid using the Ace profile system at all, and write your own from scratch, to avoid confusion. Then, do the following:
Have a default baseline configuration with settings suitable for all classes and specs. These settings are always applied first when a user logs in on any character.
Have a default per-character configuration for different classes/specs as appropriate with only settings that are different from the baseline configuration. For instance, a resto druid needs to see more granular HoT information than a balance or feral druid; moonkins and kitties could use the same class defaults, while trees would have a different one. The first time a character was logged in, it would be assigned a configuration based on its current spec.
Any changes a user makes are made to the per-character configuration.
For user control:
All statuses should be available to all configurations. If a user adds a specific buff or debuff on one profile, he shouldn't have to add it again and again to get it on other profiles. Same goes for colors and all other status settings. Statuses don't need the "Enabled" setting; if they aren't assigned to any indicators, consider them not enabled.
Allow users to save their current configuration as the baseline configuration to propigate changes to other characters, with options to include frame/layout settings, indicator/location settings, status-indicator assignments, or any combination of those.
Allow users to switch between using character-specific, class-specific, or global non-baseline settings.
Allow users to copy settings from one non-baseline profile to another.
As for dual-speccing... give users the option of switching between two specified profiles when switching specs, but leave this option disabled by default. It's never a good idea to let addons make changes to their configurations that have a noticable impact on the user's experience without the user's knowledge or consent.
Provide a brief, clearly worded explanation of the profile system and its usage in-game so that users don't have to flounder around trying to figure it out and/or search outside of the game for instructions.