I would have expected in your case that the Klant object is committed, as well as the Gebouw object and the Product object.
In the sub MF the rollback is performed on the actions before the error is thrown, so the Bedrijf object is rolled back.
In the custom handling the Product object is created after the error was thrown. The error is passed back to the calling MF, this has error handling without rollback so the Klant object is not rolled back and in the custom handler the Gebouw object is created after the rollback so this should be in the database.
However it seems that by rethrowing the error in the error event the custom create with commit action is rolled back as well.
The plot thickens even more in the following case:
A MF triggered from a button calls a MF with error handling set to custom without rollback:
The called microflow creates object A, calls MF_2 and when an error is recieved from MF_2 creates Object B without roll back and the error is rethrown.
MF_2 creates a variable to make sure to throw an error, then in the error handler with rollback Object C is created and a log message is displayed and the error is rethrown:
The result of this is that neither object A, B nor C is created, while object C should be created in the error handler, the same holds true for object C and Object A is not rolled back so should be committed.
Long answer short the answer to the question in the learning path is wrong and additional documentation on error handling in combination with rethrowing errors is needed IMHO.