The first level is a cleverly constructed graph query. Graph queries, for the most part, attempt to identify an explicit pattern within the graph database. Graph queries have an expressive power to return something at the level of an analytic in a normal data processing system. And to be fair, many analytics that you find in the normal world are really just good SQL queries, so this makes sense. What graph queries usually do is find a known subset of the important nodes in the graph haystack.
The next level up in sophistication is the graph algorithm. In this case, the query is perhaps using a function of some sort that runs an algorithm over not just simply selecting and grouping nodes, but also categorizing them or using some other processing technique to sort them out and learn something from them. With a graph query, you’re working with a discrete pattern, but with a graph algorithm, the traversal is tightly less bound, but will still begin from a declared subsection or local graph. A query may find you the needles in the haystack you knew you were looking for; an algorithm may tell you which needles are most interesting.
Finally, what I would call graph analytics, tells you something about the graph in general. In this case, nearly all nodes in a graph will be inspected as a part of the calculation. And you get something that is more like a statistical measure that would be analogous to a standard deviation calculation.