This is not a full answer, rather me sharing a setup I created a while ago:
You can probably tell by looking at a node tree, it's a combination of a less experienced past myself and older Blender (probably works in 3.0), so the setup could be modernized…
It allows to control with weight-paint the order of triangles thanosing:
The triangles move through each-other and the original mesh, there is no collision detection. For your purposes you would reverse the animation, which is trivial, however if you want one object to turn to another, you would need to make sure both have the same number of triangles. If you want to replace triangles with flower petals or whatever, you could do normal → align euler to vector → capture attribute (face domain) → mesh to points (faces mode) → instance on points (and use captured euler + the flower petal instance/s)
An old-school method would be to use Keyed Physics, on matched particle systems.
Perhaps the most controllable way is to set up 3 particle systems. One each on the source and target objects, and one on a dummy transition object. The source and target systems have normal particle effects, perhaps involving curve-guides or force-fields. The transition system is keyed between the other two:
I'm not sure it would be very helpful to share a file.. it's all in the settings, which will be very different case-to-case, and I won't pretend they aren't quite fiddly.
There's quite a nice reference here.
If you go this way and get stuck on a particular aspect, you can come back with a more specific question.