Mutually Attacking Queens
Python 2, 105 bytes



lambda b:sum(b[i+d::d][:(8,7-i%8,i%8)[d%8%5]].find('1')*int(c)&gt;0for i,c in enumerate(b)for d in[1,7,8,9])


Try it online!

Explanation

We take the input as a string of 64 characters '0' or '1'. Using step slices, we cast four "lines of sight" from every queen we encounter. For example, when i&nbsp;=&nbsp;10 and d = 7, marking the queen as ♥ and the tiles selected by b[i+d::d] as █:

1 0 1 1 1 0 0 0
1 0 ♥ 0 1 0 1 1
1 █ 1 0 1 1 0 1
█ 1 0 1 0 1 0 █
0 1 1 0 0 1 █ 1
1 0 0 0 1 █ 0 0
0 1 0 0 █ 1 1 1
0 1 1 █ 0 1 0 1


Clearly, we don't actually want vision to wrap around the board like this. So we compute how far away the edge of the board is in each direction, and view the tiles at b[i+d::d][:…].

For each tile-direction pair we count:

ray.find('1')*int(c)&gt;0


This will fail whenever


c is not a queen; or
the queen this ray sees is too close (find returns 0); or
this ray sees no queen (find returns &minus;1).


Each pair of queens is only checked once, since rays are always casted forward in reading order, from an "earlier" queen to a "later" one.