Now 0.12.0 is the baseline for most components as they're coming out of the RC12 codebase. So yes, some components will start leaping forward while other (/new) components will start of at 0.1.0.
We'll not create branches just because we can. We'll only create them if we need to backport (which we'll rarely (if ever) do).
As long as we're at major 0, it's an unsupported component. We don't care about backwards compatibility. Starting with major 1 it's a supported component. We'll keep it at major 1 as long as we can maintain backwards compatibility (which should be a very long time).
Within majors we only support the latest minor. So in actuality we only have branches for the major versions (which should be one (== trunk)).
Going to a new major should result in End-Of-Life of the previous major (so preferably ~3 years after it's release).
As long as we don't use any snapshots and have a clean test suite we can release at any time. So hotfixes can always go into trunk. If not, then we do actually branch.
There could be a product matrix, if we define some proper component plugin points. For now the ejb3 plugin depends on core which has transitive dependencies on other ejb3 components. This should be properly handled in the assembly.
Same goes for AS & Embedded, they suck in a specific version of core as well.