Sorry for this delayed answer, but your case led to some discussion among the developers as to whether it is a bug. The jury is still out on that question. Personally, I think it is a bug. The error is generated during the SQL translation phase. Even though ST_Envelope() will not be executed in this case, the SQL compiler still attempts to resolve all the identifier references.
Anyway, a workaround can be suggested. The insert statement will execute correctly if you explicitly cast the null literal to the ST_Geometry type. This actually requires 2 levels of cast because the type has has several casts defined for it; therefore you must first cast to a type that can be matched to a unique cast function. For example:
INSERT INTO t1 (geom, id) VALUES( CAST(CAST null AS VARCHAR(200)) AS ST_Geometry), 1);