false - это значение примитивной переменной с типом данных bool
а null - это специальная константа глобального уровня которая всегда будет равна такому значению
false ты можешь использовать как некую величину, что то с ней делать, а null - только проверять специальным методом IsNull(), потому что при любых других попытках что то с ней делать она тебе будет выдавать ошибку
вопрос ты задал потому, что условные операторы такие как if на первый взгляд выдают одинаковый результат когда видят false и null; это из за того что между ними в компиляторе по дефолту настроен type casting; на самом деле, false не равно null, причем null вообще ничему не равен, даже сам себе; можешь это проверить так
null == null