It all depends on your requirements and how much effort you want to put in it.
All that taken apart, combining option 3 with a polling mechanism that resends any left overs seems like a good idea.
So in your webserivce request start a microflow asynchronously so that it does not delay your webservice response to webshop A. In that asynchronous microflow call the webservice of ERP C to push the order to it. If that somehow fails due to network issues or something else. You will still have your backup scheduled event that will try to resend it. Alternatively you can build in a process that handles orders that were unable to be send to the backoffice and set them to a status error sending to backoffice. I can imagine that these may have to be reviewed by someone before they are actually resend.
Maybe the process queue module from the appstore can be of use. It allows you to add a next job (B-C) in the queue at the end of the first microflow (A-B).