Does the noisy-channel coding theorem (Shannon's theorem) apply to two-way communication with retransmission requests?
Yes.  A retransmission is equivalent to sending parity bits in an FEC code.  One advantage is that it can deal with varying channel conditions - more retransmits when the channel is worse, fewer when it is better.  However, a frame must be thrown out if even a single bit is flipped (presuming no FEC) so retransmits end up being highly inefficient as you end up sending the same data multiple times, lowering the overall rate.  If your frames are 1000 bits long and your bit error rate is 1 in 1000 bits, then on average every single frame has an error and nothing can be transmitted unless some sort of FEC is used.  So yes, you can make a system have 'zero errors' by retransmitting anything that gets garbled, but this comes at the expense of bandwidth.  

If you have two-way communications, you can use the back channel to adjust the FEC parameters (e.g. puncturing) or modulation style (BPSK, QPSK, QAM) to better take advantage of the current channel conditions.  There are so called 'rateless' codes that take advantage of this back-and-forth to achieve the maximum rate possible under the channel conditions with a fixed bit error rate.