Yes, if Destroy() happens deep in some event callstack, you will get some unexpected stuff happening due to the way
UnrealScript works with to-be-deleted actors.
However, in this particular Flashlight case, Destroy() happens right inside the Tick() event, which is not called from within some deep UnrealScript callstack, but right from the engine's main look via some native code calles and no intermediate UnrealScript. The easiest way to prevent errors in such case is to set all relevant references to None to prevent anything else from accidentally doing invalid stuff to the deleted actor. Flashlight does this through the Inventory default behavior of removing itself from the Pawn's inventory chain during its Destroyed() event.
GuidedWarshell, on the other hand, is a Projectile that is set as the player's ViewTarget. Its PostRender() call is not a native event, but routed through Weapon.PostRender(), which in turn is called by HUD.PostRender(). Any errors there are related to improper cleanup. bDeleteMe only detects such improper cleanup, but you should have really been more thorough earlier on.
I'm not saying bDeleteMe is redundant in all cases, but usually there are other things going wrong if you find yourself needing it. Granted, your Destroy()-during-spanwing example where a SetLocation afterwards happened further down the initialization sequence is a valid case. However, that's only so because SetLocation() apparently doesn't do the check itself.
Remember that UT is a game that came out when the engine itself was still very new. Epic didn't know it in and out themselves yet. Things have improved by a giant margin from the state of UT v436 to the state of UT2004 v3369. Often, when I look back at UT UnrealScript code, I can help but notice how bad it really ist. I mean, just look at that Flashlight script. As simple as it is, there are errors left and right. That might be due to the fact that it's actually not even UT code, but from the original Unreal. The GuidedWarshell does something projectiles aren't supposed to do. If you compare it to how vehicles and the Redeemer work in UT200x or UT3, you'll notice just how big of a hack it really ist.
Bottom line: If your code is clean, you only need bDeleteMe in very special situations to work around engine bugs.