OK let me try to explain it better: let's say we have a conversation between 3 friends who are all running their own homeservers to connect to matrix. All three servers will keep a copy of the conversation, and if one server goes down and reconnects, the two other servers can update it with the messages that went on while it was down.
If friend 1 and 2 have a separate conversation in a different room, only their two servers will keep a copy of the conversation history. If friend 3 joins this room, his server will receive the current history from the other servers (there's a limit for efficiency but you can explicitly get all the history via pagination).
If friend 1 and 2 have a separate conversation in a different room, only their two servers will keep a copy of the conversation history. If friend 3 joins this room, his server will receive the current history from the other servers (there's a limit for efficiency but you can explicitly get all the history via pagination).