My question is simple:  What is the difference between using pygame.draw and pygame.gfxdraw?  I've looked on the pygame documentation, but no one has told what the difference between them is.
gfxdraw allows anti-aliasing for all shapes, where drawonly adds antialiasing to lines. I use gfxdraw by default. It has been marked 'experimental' for a long time now, but I've not had any issues.
Difference between pygame.draw and pygame.gfxdraw