payment subscriptions
There are several parts to your question, so I'll try to address them separately.


Part 1 you can handle with price sets.
Part 2 can be handled with the CiviDiscount extension, if the requirement is that both children are registered at once.  If they can be registered separately, you'll need a hook that checks for the relationship.
Part 3 is the tricky part - what you're looking for is called "front-end partial payments".  This has been written as custom code by Back Office Thinking - and there's a group of developers gathering funding to build something like this in core.  However, there's no way to do this today without custom code.
Part 4 you can also handle with a price set.