How long does it take for a transaction with 0 fees to be confirmed or rejected?
The time it takes for a fee-less transaction to be confirmed can vary vastly. While sometimes you're lucky enough to have it confirmed within the next block (as if you had paid the standard fee), other times it may take days.

This depends on the current transaction volume and miners' level of altruism. Most notably though, it depends on the number of Bitcoin Days Destroyed. Older coins (coming from older transactions) are conventionally assigned higher priority, and thus will generally be included in a block sooner.

As your transaction is pending (unconfirmed), the coins it is spending are getting older and older every day, so the chance of finally getting confirmed is slightly increasing overtime. This should prevent your coins from becoming completely unaccessible, stuck in the void.

No transaction can be rejected though, there's just no such thing in the protocol.

Finally, if this happens to you and you're not willing to spend some arbitrary time in uncertainty waiting for the confirmation, you can perhaps try to create a double spend transaction with higher fees, hoping it would be picked up by a non-standard (though pragmatic) miner.