Hello @Philip O'Rourke and welcome to Microsoft Q&A.
I am not that good with Azure Monitor, butI think I can help with part 1). The others will take me some time to look up.
As for making the link go to a specific pipeline definition rather than the factory in general, I have something to share. You may not have noticed, but when you click to edit a pipeline, the URL bar changes to include the pipeline name. Reloading the browser then takes you back to the same pipeline view.
https://adf.azure.com/en/authoring/pipeline/{pipeline_name}?factory=...
and when monitoring a pipeline run it is like
https://adf.azure.com/en/monitoring/pipelineruns/{pipeline_run_id}?factory=...
For changing the link from the send_email pipeline to the caller, there are a couple options.
You can pass the parent/calling_pipeline's pipeline name to the child/send_email pipeline as a parameter, and then you can do like
"pipelineName": "@{pipeline().parameters.CallerName}"
or you could get fancy and ... actually, nevermind, passing a parameter is simplest.
I imagine the calling pipeline information should be available in Azure Monitor too. It might be under invokedBy.pipelineName
like in the result of using Get_pipeline_run_by_id. I'd need to set up and look myself.
Let me know if this helps, or if you have any questions.