Partial answer only to address the apparent inclinations in the image
(refer to @blobbymcblobby's thorough answer and others if posted for the rest)
Through the extremely rigorous method1 of looking at the animation on Wikipedia's article about GPS, if this does indeed accurately represent GPS satellite orbits, then it looks like not all of the orbital planes are at the same inclination.
1I see what you did there :-)
The author of the image does appear to try to have illustrated six planes at the same inclination of 55° spaced at 60° intervals. However the notes that come with the illustration don't mention how the lines of apses for the 0.05 eccentricities were oriented.
A simulation of the original design of the GPS space segment, with 24 GPS satellites (4 satellites in each of 6 orbits), showing the evolution of the number of visible satellites from a fixed point (45°N) on earth (considering "visibility" as having direct line of sight).
The parameters used to simulate the orbits are: eccentricity (e) 0.05, inclination (i) 55° and a separation between orbits of 60° in the right ascension of the ascending node. Within each orbit, the four satellites are evenly spaced (the instant of pass through perihelion being arbitrary for the first satellite in each orbit). The orbital period of the satellites was taken to be 12 hours. The earth was considered a perfect sphere with a radius of 6400 km.
The time in the animation is running about 2880 times faster than real time (half a minute representing 24 hours), as clearly seen in the rotation of earth. The simulation was created using MATLAB and converted to animated gif format using Adobe ImageReady.
Using just six circular orbits with 55° inclination spaced at 60° intervals I can already get pretty close to the same pattern. Since there's no information on the lines of apses, I didn't try to add eccentricity.
Therefore if the image does not appear to represent six 55° inclined orbital planes spaced at 60°, it still might, but either the placements of the little dots (RAANs) or the eccentricities and lines of apses may be throwing you off.
source
Python script:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
points = np.linspace(0, 2*np.pi, 201)
equatorial_orbit = np.array([f(points) for f in (np.cos, np.sin, np.zeros_like)])
inclination = 55
sin, cos, one, zero = [f(np.radians(inclination)) for f in
(np.sin, np.cos, np.ones_like, np.zeros_like)]
rot_about_y = np.array([[cos, zero, sin], [zero, one, zero], [-sin, zero, one]])
orbit_tilted_about_y = (rot_about_y[..., None] * equatorial_orbit).sum(axis=1)
orbits = []
for rotation in 60 * np.arange(6):
sin, cos, one, zero = [f(np.radians(rotation)) for f in
(np.sin, np.cos, np.ones_like, np.zeros_like)]
rot_about_z = np.array([[cos, sin, zero], [-sin, cos, zero],
[zero, zero, one]])
orbit_rotated = (rot_about_z[..., None] * orbit_tilted_about_y).sum(axis=1)
orbits.append(orbit_rotated)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection='3d', proj_type = 'ortho')
for x, y, z in orbits:
ax.plot(x, y, z)
ax.set_xlim(-1.1, 1.1)
ax.set_ylim(-1.1, 1.1)
ax.set_zlim(-1.1, 1.1)
ax.set_box_aspect([1,1,1])
# https://stackoverflow.com/a/68242226/3904031
ax.view_init(elev=45, azim=0)
plt.show()