Rockets generally want their fuel to be sitting on the bottom of the tank, where the engines are. That's easy enough when the rocket is sitting on the ground and when the engines are firing, but once the rocket starts coasting/decelerating (e.g., when the engines turn off due to reaching the end of their burn) the fuel may drift away from the fuel intakes, resulting in the engines ingesting vapor/gas the next time the engines turn on. Rocket engines are designed with a pretty specific operating environment in mind, so ingesting vapor/gas instead of fuel usually leads to the engines expressing their displeasure in a very vocal fashion.
This poses a challenge for staging. The naive way to stage is to turn off the previous stage's engines then ignite the next stage's, but the time between the first set of engines turning off and the second set of engines reaching a sufficient thrust level to keep the fuel at the bottom of the tanks may be enough for the fuel to drift away from the fuel intakes, especially if staging occurs lower in the atmosphere or after an extended coast period.
One way of addressing this issue is to use "ullage thrusters" - small rockets that maintain a small amount of forwards acceleration during staging to keep the fuel at the bottom of the tanks. This is what the Saturn rocket did between the first/second stages.
Another way is to "hot stage" - ignite the new set of engines before the old ones cut out. This is what the Soyuz does (and is why its stages are connected with a lattice - to let the exhaust out), and is what Starship was trying out this time. This can be simpler than using ullage motors since there are fewer pieces, but also poses some additional challenges in that the first stage needs to survive the second stage's exhaust for long enough.
The last way is to use RCS thrusters for a period to settle the fuel. This was used by the Saturn third stage before trans-lunar injection, but can really only be used once you're in orbit.