What precautions should I use when reading/writing video RAM ?

When the display is off you may read or write video RAM without restrictions.

When the display is on and not in vblank, you have to check to see if video RAM is available before you can write to it. If video RAM is not available you will read $ff and writes will be ignored.

If you read STAT ($ff41) and bitwise AND the result with 2, the result will be 0 when VRAM is available.