To me it looks like you'll need:
* a way to move objects back and forth on a path.
* use an array or something to have a list of the objects on the path in order. That way you only need to look at the objects next to each other to handle collisions.
* be able to loop over the list either direction to be able to push chains of objects.
* pushing objects can be done by either repeatedly moving the next object forward on the path until not overlapping, or a you can go 100% precise and use some math to find the exact point where the two objects intersect.
* when shooting a new object and it hits an object on the path, it needs to be inserted into the list at that spot. Maybe with a nice gradual transition that moves the object onto the path.
*it looks like you'll have to keep track of which objects are in contact with each other. Should be as simple as setting a Boolean when they first collide.
* matches seem to be triggered when adding a new object to the chain or when a new contact is created. Should be simple as checking the area in the list around where the contact happened.
It's not really scoped to make for a good tutorial.