No conozco el componente pero a simple vista puede decirse que funciona "igual" al TStringGrid standart
1) RemoveSelectedRows no necesariamente elimina una por una. En realidad elimina la fila seleccionada cuando le haces click con el boton izq. La que esta "sombreada en azul" (me imagino por defecto). Tambien seguro tiene una propiedad multi select que si la pones a true te deja seleccionar varias filas apretando shift o alguna otra tecla, y entonces si llamas a RemoveSelectedRows te elimina todas las seleccionadas.
Dicho esto, Lo que hace tu for es recorrer todo el grid, hace una "pregunta" (no importa realmente que) y si da true,
elimina la(s) fila seleccionada. Supongamos que esta seleccionada la primer fila cuando llamas a ese codigo, entonces elimina la primera, luego la seleccionada pasa a ser la de abajo, y si el codigo vuevle a dar true, te elimina la segunda (que ahora seria la primera). Osea que te puede pasar que estes preguntando por el checkbox i-esimo y estas eliminando otra fila, Me sigues?
2) RemoveRows. Este tiene pinta de que le das un valor de inicio y uno de fin, supongamos i y j. Entonces lo que hace es eliminar todas las filas que esten entre a y j. Lo que hace una llamda como la de tu codigo:
Código Delphi
[-]
GridProcedimientos.RemoveRows(GridProcedimientos.Row, GridProcedimientos.RowCount);
RowCount es la cantidad de filas, si tenes seleccionada la primera (GridProcedimientos.Row), entonces estas diciendole que elimine todo
Lo que tendrias que hacer es un for similar al que pusiste primero, pero en ves de llamar a RemoveSelectedRows, tendrias que ver la forma de eliminar la fila i-esima (la que coincide con el checkbox del cual estas preguntando el estado)
A ver si te sale, suerte!