I should mention for other readers that these are all XSLT 2.0 constructs.
The differences between doc() and document() are mainly (a) that document() can take a sequence of URIs and return a sequence of documents, whereas doc() only handles one, and (b) that document(), if given a node rather than a string as its argument, resolves relative URIs relative to the base URI of that node, rather than the base URI of the stylesheet.
The differences between $node/key(A, B) and key(A, B, $node) are mainly that (a) the context node for evaluation of b is different for the two cases, and (b) the second form searches the subtree rooted at $node, not the whole document.
In your cases these distinctions make no difference to the result.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference