#1 Regarding your first question, I wrote about exactly the same topic
here
#2 Your backend system can trigger a flow run via an API call - you don't even have to install Prefect to do that, just using e.g. requests as shown
here will suffice
#3 It knows it through labels - you attach a
label to your flow run configs and the same label to your agent, this way they get matched. The agent needs to be running 24/7 to constantly poll for new flow runs
#4 Some best practices are listed
here but ask if you have any specific questions. The code is managed via the
Storage abstraction and a
Hybrid Execution Model