:fail: works at the rcpt stage of the e-mail transaction.
The SMTP transaction goes something like:
EHLO <server>
mail from: <who its from>
rcpt to: <to address>
DATA
.
.
When talking about incoming mail into your server, then this same transaction happens, the server connects to your server, introduces itself as server with EHLO <server>.
Then the sending server says this message is from someone with mail form: <address>. I think exim denies messages if the domain part of that address is not routeable or does not have an A record or MX record, but I may be wrong there.
Then the sending server says who this message is intended for rcpt to: <address>. This address has to exist on your server. If it does not exist as a POP/IMAP account or as a forwarder on your domain, then the default box is where it will go. If the default box is set to :fail: then your server says "STOP don't go any further, this recipient does not exist" and the session closes. The message is never accepted. The message never reaches your server. The sending server, it may send a bounce back message to the original sender saying that the recipient does not exist on your server, but that is done by the sending server, not your server.
Its important not to confuse a bounce message which is like an autoresponder and a failed message (which really isn't a message, its more like a response code) which is what :fail: does.