To clarify, child executions are not independent of their parent. All child executions are governed by their parent. If the parent is stopped, all of its child executions will be stopped as well. This behavior was chosen so that it was not possible to lose control and have runaway executions.
When child1 fails, the PipeExec snap will signal the failure by writing an error document. Since the PipeExec snap does not have the error view open and is configured to stop pipeline execution in case of an error, the snap will be marked as failed and the parent pipeline will be stopped. And, since the parent is stopped, all of the children will be stopped as well.