Think of "/" as meaning "then get...", and "[]" as meaning "selecting only those that have ...". So something that ends /list/item[last()][@key] means "then get the child list elements, then get the child item elements, selecting those that are the last item, selecting only those that have a key attribute".
If the thing you want to select is a key attribute, then the final "/" will be followed by "@key".
Note also that a/b[last()] selects every b that is the last child of its parent a. If you want the last b among all the a's, use (a/b)[last()].
So you probably want (list/item)[last()]/@key, or possibly (list/item/@key)[last()] - if every item has a key these are equivalent.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference