In bash (don't know about other shells) the < operator sets the stdin of the process to the given file.
< filename.json jq
Here, data is read directly from the given file.As for the | operator, the stdout of the left-hand process and the stdin of the right-hand process become a pipe:
cat filename.json | jq
Here, data is read from file, copied to a pipe buffer, the other process is
notified (in most cases, by being woken up) that there is incoming data and then it finally reads the data.Not that any of this matters in today's world of pocket supercomputers but I just don't see how any of your points back up the useless use of cat. It's still useless :)