I've got used to edit about 30% of my messages in Skype. Also I expect my messages to be delivered in the end independently of whether the peer is online now or not (i.e. eventually the message will arrive when we both will be online).
I haven't seen these features in Jabber yet although.
What XMPP clients (or what protocol extensions) should I use to support convenient chatting?
Actually want the chat to be more like wiki (putting links, also editing peer's messages, revision history, some formatting), but just using a wiki software is not that (no normal per-contact history, no normal notifications, no "use is typing…").
Best Answer
XMPP servers/clients usually support sending messages to offline contacts. These XEPs might be relevant (maybe there are more):
I don't know how Skype implemented this, but there is a XEP for editing the last message sent.
XEP-0308: Last Message Correction:
I think OneTeam has implemented this feature (but I'm not sure, never used this client). There may be other clients, too.
/edit: as Zash noted, Swift supports it, too.