How does the Bitcoin payment forwarding at Blockchain.info work? We have been using the payment service provided by blockchain.info https://blockchain.info/api/api_receive

It allows us to generate a unique address for each payment and forward Bitcoins received by these addresses to a forwarding address. From what I understand, bc.info pays the transaction fee for the forwarding transaction for us.

We want to use our own wallet. I have two questions:

1) How does bc.info handle this cost? Am I missing something? Are they really paying 0.0001 BTc for each payment their clients receive?

2) Is there a way to forward payments without paying fees?
The fee for each transaction can be calculated using estimatefee API call. And yes, blockchain.info have to incorporate fee in every transaction, 0.0001 BTC being the minimum. One of the reasons attributed for the necessary fee deduction is the quick inclusion of the transaction in the next few blocks.
You can try creating a transaction with the outputs spending all of the inputs and not paying any tx fees. The client will throw an error stating insufficient priority.
Yes you can, but then are conditions apply. You can check out this link to clear things a bit more.