1) Disque synchronously (or async if you want) replicate messages across the cluster, so N-1 nodes can fail (N is the replication factor) and the message will still be delivered. NSQ is different in that regard, quoting from the doc: "messages are delivered at least once. Closely related to above, this assumes that the given nsqd node does not fail."
2) Federation apparently is not built-in but uses "nsqlookupd", however this may be similar to what Disque provides, I'm not sure. In Disque you can have a single queue distributed among multiple nodes, it looks like using "nsqlookupd" this is the same in NSQ.
3) If I understand correctly, NSQ has no support for delayed messages.
4) I'm not sure if in NSQ you can specify a per job retry time for jobs to be re-delivered automatically, and if a TTL time is also available.
5) I'm not sure if NSQ is able to re-queue the message even without receiving a negative ACK from the client.
Would be cool to have all this checked by NSQ authors.