Unless you use the partially calibrated gaze data after the first call to compute_and_apply, there is no need to call it. you can remove the failed points immediately and re-collect them before calling compute_and_apply.
The call to collect_data_2d can fail for different reasons. The most common reason is probably that not enough samples were collected. That doesn’t have to mean that the collected samples are bad. If you discard them and collect new data at the same coordinate, there is a risk that also the second collect will not yield enough samples, but together it might be sufficient. If you have reason to believe that the data that was collected was bad (includes eye movements, or user was looking elsewhere), it is correct to discard the data.