I’m not an EE, but a while back I did a fair amount of looking in to what ground routing was all about; you can find my notes and references here. It’s well worth following those references if you want to get into the details. (The longer summary there and shorter one here are my work; I welcome corrections to them if you have references (including my own). But there’s a lot of misinformation about this floating around, and apparently even many experienced EEs aren’t too up to speed on all of this.)
There are basically two situations you have to consider completely differently when it comes to dealing with ground on a PCB.
“DC” Ground
The first is “DC” connections or signals, those changing at well under 1 kHz. For these a device’s connection to be ground wants to have low resistance and be capable of carrying as much current the device is likely to sink on all of its inputs at once. Routing makes little difference except inasmuch as it increases the resistance of the connection back to ground, and you can usually compensate for this with wider traces. There are equations kicking around for determining the resistance of a trace of a given height, width and length; you can use these with Ohm’s law if you really want to get into this, remembering you need to analyse your power outputs/inputs, too.
AC Return Paths
For signals at 1 MHz and above, the return path is often not exactly what you’ve routed on the board (except for properly constructed balanced pairs) but instead will use whatever ground routes on the board are available that follow as closely as possible the signal path. (The signal itself is carried in the electrical field between the signal path and the return path; this is where EMI comes from.)
(And actually, the nominal frequency of the signal here is not really so much about how frequently you change from low to high or vice versa, but about the slope of the edges of those transitions: modern devices have much faster edges than old 1970s ones and thus have a much higher effective frequency for many analysis purposes, even if they are nominally both e.g. 1 MHz clocks. This has all sorts of implications that I won’t get into here.)
Generally, you want to try to make sure you’re providing some sort of path to ground as closely parallel as possible to each signal path. This could be done by actually putting a ground trace in parallel with each signal trace, as closely as possible to the signal trace. Often putting the return path on a different layer directly above or below the signal path will leave it closer than a parallel trace on the same layer.
This is why ground planes work so well: it’s a convenient way to ensure that there’s a return path parallel to every signal trace. But note that interruptions to the ground plane can break this. This is dramatically demonstrated in the following image with signal lines going straight across the board, but a large cut-out in the ground plane on the other side: you can see that the signal returns can’t follow the traces, instead having to go a long way around. This gives you a big gap between the signals and return paths, which is a big EMI field that can both interfere with other things and is much more subject to interference from other things, degrading the signal integrity.
Note that ground planes should not be confused with ground fill (many people do this): as you can see from the above a ground fill that’s heavily broken up is far from a ground plane and in many cases will provide essentially no help at all for signal integrity, or even degrade it.
The issue with interference in AC signals is when two separate signals share (usually just partially) a return path; this can cause interference between the two, almost as if the original signals were partially sharing their signal paths. You can see a perfect example of this above: the three signals all share a common ground return path around the cutout in the ground plane.
Whether a “star ground” does this depends on the actual signal paths; you cannot consider ground and signal paths separately. For any AC signal, its actual path is always the combination of the signal source and the ground return.
Your Ground Routing
In your case, it looks as if your board falls mostly into the “DC” category. (I assume you aren’t going to be pushing those switches at super-human speed.) So for those you need not care much about how the ground is routed; whatever you do to deal with the bounce inherent to the switches will be far more than you need to deal with any other signal integrity problems you might create.
I don’t see any LEDs, but if you are using any remember that PWM, depending on the speed, may be considered an “AC” signal to some degree.
The signals to the I/O expanders and the like are usually pretty low frequency, so I reckon you’re unlikely to experience issues there no matter what you do so long as you have decoupling caps as close to the Vcc and GND pins as possible.
The same goes for the signal cables back to the microcontroller. Normally if you were doing a ribbon cable connection for high-speed use you’d alternate signal and ground lines on the cable so that each signal has its own parallel return path. You might want to consider doing that, but at low speeds its often not necessary.