is true. However I will be switching to the async love mouse callbacks instead of polling and was wondering if there is a better way than checking every fixture in the game to see which the user clicked. Maybe something like a queryPoint(mx, my) that returns all fixtures that contain that point?
No, you will have to check every relevant instance. You can narrow down the list of relevant instances by keeping such a list at hand, such as by using spatial partitioning of sorts. Box2d keeps such spatial partition internally (a quadtree) so if you can use physics' mechanisms then that'll do the job. Or you can use whatever other technique that allows to figure out approximately (or exactly) which object you should access based on some information about it. One example is using a space-filling curve in conjunction with hashtable-mode Lua table for storing and accessing the spatial information of the objects.
If you're not performance-constrained, you can simply loop over every single instance without performing any optimization to cut down on the processing. Keep in mind that minimum system requirements is a thing and it shouldn't be a $1000 machine.
queryBoundingBox will return potential fixtures that may collide with your point but then you still need to iterate each fixture returned by that query and check it using fixture:testPoint.