Assuming the inputs are lists of 1D arrays, as listed in the sample data provided in the question, it seems you can use broadcasting
after row-stacking the input lists, like so -
import numpy as np
s1 = np.row_stack((set1))
s2 = np.row_stack((set2))
s3 = np.row_stack((set3))
s4 = np.row_stack((set4))
sums = s4[None,None,None,:,:] + s3[None,None,:,None,:] + s2[None,:,None,None,:] + s1[:,None,None,None,:]
count = (sums.reshape(-1,s1.shape[1])==0).all(1).sum()
Sample run -
In [319]: set1 = [np.array([1, 0, 0]), np.array([-1, 0, 0]), np.array([0, 1, 0])]
...: set2 = [np.array([-1, 0, 0]), np.array([-1, 1, 0])]
...: set3 = [np.array([1, 0, 0]), np.array([-1, 0, 0]), np.array([0, 1, 0])]
...: set4 = [np.array([1, 0, 0]), np.array([-1, 0, 0]), np.array([0, 1, 0]), np.array([0, 1, 0])]
...:
In [320]: count = 0
...: for b1 in set1:
...: for b2 in set2:
...: for b3 in set3:
...: for b4 in set4:
...: if all(b1 + b2 + b3 + b4 == 0):
...: count = count + 1
...:
In [321]: count
Out[321]: 3
In [322]: s1 = np.row_stack((set1))
...: s2 = np.row_stack((set2))
...: s3 = np.row_stack((set3))
...: s4 = np.row_stack((set4))
...:
...: sums = s4[None,None,None,:,:] + s3[None,None,:,None,:] + s2[None,:,None,None,:] + s1[:,None,None,None,:]
...: count2 = (sums.reshape(-1,s1.shape[1])==0).all(1).sum()
...:
In [323]: count2
Out[323]: 3