Why call calc_normals_split before acessing normals

When accessing normals from Mesh Loops, why do all the export scripts I’ve seen, call calc_normals_split function? Isn’t this function used for custom normals? And why do the normals not get calculated when I call calc_normals instead?

Could someone also explain to me why the normals need to get calculated in the first place for mesh loops? Why can’t they just store the normal values as do the mesh vertices.