So you can do this with CommCare by inserting some variables and calculations to build a repeat which indexes into the multiselect results. This would look something like:
<!-- ... -->
<!-- In the instance -->
<num_children/> <!-- total number of selected elements -->
<cur_children/> <!-- an counter for each element as the models are created -->
<!-- Repeat Host -->
<child_info index="" id="">
<!-- Repeat question models go here -->
</child_info/>
<!--... and then for the binds ...-->
<!-- Count the total number of values to iterate over -->
<bind nodeset="/data/num_children" type="int" calculate="count-selected(/data/multiselect_answer)"/>
<!-- count the number of repeats that _currently_ exist. -->
<bind nodeset="/data/cur_children" type="int" calculate="count(/data/child_info)"/>
<!-- When a new repeat is created (jr-insert fires), capture its index -->
<setvalue event="jr-insert" ref="/data/child_info/@index" value="int(/data/cur_children) - 1"/>
<!-- capture the ID (in this case the case_id) of the thing we're iterating over -->
<bind nodeset="/data/child_info/@id" calculate="selected-at(/data/multiselect_answer,../@index)"/>
<!-- ... finally the repeat itself -->
<repeat nodeset="/data/child_info" jr:count="/data/num_children">
<!-- This is optional, but will suppress the confusing "1/1, 2/2 progression" and display only the repeat header's name. -->
<jr:entryHeader><output value="$name"/></jr:entryHeader>
<!-- Repeat questions go here -->
</repeat>
If you inserted a <case> update block into the repeat, it will be able to create all of the relevant cases. You shouldn't need any actual questions in the repeat block itself, only hte updates.