query - выполняет запрос к документу.
evaluate - выполняет, даже не знаю как сказать по-русски, вычисление выражения.
основное различие в возвращаемом значении:
query возвращает DOMNodeList (даже пустой) или ошибку.
evaluate возвращает или результат (если он есть), или DOMNodeList, или ошибку.
пример