You could use “Get order data” and the “return_status” variable to get orders that have returns. I think the values are return_requested, in_progress, returned, so something like “return_status:returned” might work.
You would probably need to loop over the orders using the “For Each” step.
Items 3-5 could be done in the value field of a metafield using Liquid.
I’d encourage you to get the first part working and come back with questions once you get further.
You can’t interchange those triggers because they provide different data (like the refund object I used). To do this, I think you would need to change the liquid I suggested to start with order.refunds instead of refunds