i) Can a process be spawned or configured only from the root task? (using sel4_configure_process)
This one I can answer, though I'm not too familiar with the sel4_libs. :-)
Any thread can spawn another thread (or a process with separate address space) if it has the appropriate capabilities. All of the raw materials for a thread or process can be built directly from untyped objects... and that's all you need -- enough untypeds to slice and dice into a CSpace, maybe a VSpace, TCB, probably an Endpoint, etc.
(I know the simple library has some stuff to make this easier, but hopefully the theory helps guide you!)