1.
SMTPAgent can be used to process email this is sent or received via SMTP, the most obvious example is an Edge server in Exchange where by design all Email that traverses this type of server will be sent or received via SMTP. Other examples would be something
like an RBL list where your processing the SMTP headers to determine if you want to accept delivery of a message.
RoutingAgents can be used to process any mail that is processed by a Hub Server eg a Message that is sent internally between two users on the same server will still traverse a Hub server but because there is no requirement for it the email will never be
converted to SMTP so in this instance a Routing Agent would fire but a SMTPAgent wouldn't.
see
https://technet.microsoft.com/en-us/library/bb125012(v=exchg.141).aspx
2.
>> How can I control the email flow in Transport Agent? Such as, reject email delivery, accept email delivery, and discard email delivery.
Yes and No you can do all the above but you need to give more context I would suggest you start with the Transport Agent samples
https://msdn.microsoft.com/en-us/library/office/dd877105(v=exchg.150).aspx . Then ask more a detailed question around what your attempting to do if you have a question around a specific thing eg particular things like RBL's would only ever be valid for
SMTPReceiveAgents.
Cheers
Glen