In the expanding explanations of the Python port of an orbital mechanics library, I also found explanations about J2 perturbations, from a Stack Exchange post: J2 perturbations