It is not entirely clear to me what you exact question is about, so perhaps you can edit your question based on my answer in case this doesn't answer it.
Let me start of with some resolving basics:
When Component A has a link to Component B, publishing Component A will not publish Component B.
When you publish Component A, it does not mean Component B has changed, so it does not need to be republished.
When you publish Component B it will trigger Component A to be (re)published.
The rule behind this is that the link to Component B creates a dependency, and when you publish Component B, it assumes that any Page where Component A is on, will need to be republished too.
The above is all talking about embedded Component Presentations on a Page, when we are talking about Dynamic Component Presentations, the logic differs to the extend that the Component will be published with all linked Dynamic Component Templates.
Now you mention your Component have child Component, I'm assuming you mean that there is a link in the (parent) Component to the (what you call) child Component. So then the behaviour you see seems to be correct, if you are only adding B1 and B2 in a resolver when publishing A1. If you also want C1-C4 to be added to the resolved items, you should separately resolve B1 and B2 and have that add C1-C4.
The main question I would have is, why do you actually need that? Can you explain the use case why you need to add in linked Components to your resolved items list? If you update your question with that information, maybe my answer can be different too.