On my computer 10000 points work okay; I can rotate and zoom in the program shown below. It is true that attempting 1000000 points doesn't work, and there would indeed be an advantage to using points rather than spheres.
p = points(color=color.cyan, radius=1)
N = 10000
for i in range(N):
p.append(10*vector.random())
The standard behavior of VPython is to show both the inside and outside of objects, so that one sees something upon zooming inside a box, and hence also both sides of a triangle or quad. This could in principle be a user-controlled choice. What is your need for this?