Now I see, when you say "remove" you mean placing the sprite outside the 
screen (e.g. y=212), not skipping its plane in the SAT when you update it.
Assuming you mean this, everything make sense, as rotating the SAT in 
sprite mode 2 is absolutely cumbersome (512+128=640 bytes per frame).
Yes.
BTW, the case you depicted is a bit "theoretical", in the sense that you cannot
be sure that removing 4 sprites before the one in S0 will guarantee that S0
is displayed... To be sure you should remove at least  S0-7 planes before S0
(and this can imply a HUGE flickering...)
Yes, Assuming i have  16 sprites on the same line aligned, the vdp will report 8.
So, removing only 4 sprites enable the vdp to display at least the sprite number 8-9-10-11 (because i hide the planes 4-7)
Of course the greater number of sprites (max = 8 ) you remove at every frame the higher the flicker frequency you achieve at the cost of a big number of sprites flickering.
In the above situation, removing 8 sprites at each frame will achieve a 25 fps flickering freq.
Basically the algorithm is this:
const nspr = 8;     // number of sprites to remove at each frame;
function int38h()
{
      if (i_have_to_many_sprites)
      {
            updatevramsat(plane_base_index, nspr);  // calling this will update y  pos to 216 starting   at plane_base_index for nspr planes
            plane_base_index+=nspr;  // number of sprites to remove at each frame
      }
      else
      {
            write_Sat_as_Is();   // write the sat without boring of sprite limits
            plane_base_index=0;
      }
}
So i will continue to remove chunks of nspr sprites until the vdp says "OK, no to many sprites". Really i use only the s0 reg to know the overflow situation;
In my specific situation i've added also the option to make the first 4 planes fixed, but this is only because i do not want the main charater to flicker.
If it's not clear feel free to reply to this.  
