The purpose of deleting the target is to make sure that it is remade from scratch when make is next run. Why is this? Suppose you use Ctrl-c while a compiler is running, and it has begun to write an object file ‘foo.o’. The Ctrl-c kills the compiler, resulting in an incomplete file whose last-modification time is newer than the source file ‘foo.c’. But make also receives the Ctrl-c signal and deletes this incomplete file. If make did not do this, the next invocation of make would think that ‘foo.o’ did not require updating—resulting in a strange error message from the linker when it tries to link an object file half of which is missing.
You can prevent the deletion of a target file in this way by making the special target, .PRECIOUS, depend on it. Before remaking a target, make checks to see whether it appears on the dependencies of .PRECIOUS, and thereby decides whether the target should be deleted if a signal happens. Some reasons why you might do this are that the target is updated in some atomic fashion, or exists only to record a modification-time (its contents do not matter), or must exist at all times to prevent other sorts of trouble.