En operaciones DELETE, la variable NEW tiene como valor NULL, y su uso en expresiones no ocasionará errores, pero si intentas acceder a alguno de sus campos, ahi sí te marcará error, dado que su estructura no está definida. Primero deberías condicionar el tipo de operación, para que sólo en los UPDATE hagas esas comparaciones.
Ahora, el orden en que definas la ejecución del trigger, depende de lo que quieras hacer. Si deseas descartar el cambio realizado al registro, o hacer una modificación previa al guardado de los datos, debes usar BEFORE.