The sad truth is that Odoo can't handle (right now at least) both methods (MTO and MTS) for the same product, so if you expect to generate the orders upon creating an order you are forced to use MTO, and you can use MTS for the other scenarios.
Even that said I have left MTO activated for almost all products, because in some scenarios odoo won't trigger any rule even it is needed to. For example:
Product D reordering rules 20/100/5. Current stock: 30. When I trigger a MTO that consumes 45 D, no replenishment rule will be triggered even tho the 30 units are reserved, which may create a problem on the future because delivery times may be quite long.
To solve this problem you need to keep checking Inventory->Operations->Replenishment every day and whenever you see negative quantities, you need to manually make an order and check the Reordering Rules to make sure it wont happen again next time. That is not ideal, but at least there is somewhere to check all products fast...
If you need the MO and PO to trigger, you can define that in Replenishment. You would need to select the preferred route and trigger as Auto.
In your example, a replenishment for Prod B would be visible on replenishment but none for Prod A or Prod C. You can create one for A &C so the routes trigger automatically as well
Yes, I went to Inventory->Operations->Repleinishments and there is nothing there... I think I kind of solved the problem.
What I did was enable MTO, and make product B MTO, and then set the dates "costumer lead time" to (example) 30 days, and the manufacturing time to (example) 20 days.
I'm now trying to make it work on multilevel boms, but I don't think that's the way odoo devs intended it to work, since MTO is archived on Odoo14.