Okay, I think I see - and the pseudocode was just to 'present' the idea, you can add things like checking for preconditions to a model, also Delete Features is a tool you can drag into a model as well...but looks like you may have a problem with your iterator, and possibly when it crashes it is creating 'malformed' output, ghost output, if you will.... It would help if you posted your model, although I am not in the office now to take a look at it.
I suggest this though at least to try to isolate the error - your spatial analyst tool has the syntax:
ExtractValuesToPoints (in_point_features, in_raster, out_point_features, {interpolate_values}, {add_attributes})
...or, say this, if this makes better sense:
ExtractValuesToPoints(inPointFeatures, inRaster, outPointFeatures, "INTERPOLATE", "VALUE_ONLY")
So your iterator must be feeding the raster dataset in for the 2nd param inRaster, shown above -- your inPointFeatures can remain constant but that is where you must be getting 'no value' data, where there is nothing spatially coincident with the currently used raster dataset. It may be more efficient to 'preprocess' or 'qualify' points (possibly with the extent environment) with the extraction.
Also, you have to somehow provide a mechanism to rename the outPointFeatures on each iteration...how are you including that? ...could attempt overwriting the same temp fc, but append it or copy it to a permanent location before moving on in the loop; again, must have unique names if copying to a separate fc.
It would help greatly to 'see' your model. Include any additional error messages and shapefile output, if you can.