An RNN is designed for sequential data, using hidden states to capture temporal dependencies. Vanilla RNNs can suffer from vanishing or exploding gradients, prompting innovations like LSTM and GRU. They are commonly used in language modeling, time-series prediction, and speech recognition.