You have to call ForgeHooks.isCorrectToolForDrops, which will check if the given player's currently held item can harvest the block. This might also do all kinds of other checks on the player, as for modded blocks the harvesting might not only depend on the tool being used.
RenderGameOverlayEvent.PreLayer will fire for all overlay elements. You can check if it is the air level by comparing the overlay element to ForgeIngameGui.AIR_LEVEL_ELEMENT.
You can either use EntityViewRenderEvent.FogDensity, which will set setShaderFogStart and setShaderFogEnd for you based on the density you set on the event (provided you cancelled the event) or you can use EntityViewRenderEvent.RenderFogEvent (only called if FogDensity is not cancelled) and do your own fog settings there (by manually setting setShaderFogStart and setShaderFogEnd for example). You can see where this happens in FogRenderer#setupFog.