If messages get lost, the receiving side can simply ratchet again and try to decrypt the message with the next (in this case, correct) key
The second question is great and more nuanced. In theory, you could never be sure about potentially unreceived messages. In the end, implementing applications would have to make a decision about when to delete old keys and how many unreceived messages to anticipate.
Best,
Niklas