Почему нужно отделять два в подсчете количества устройств подсети?
Потому что адресов в маске /24 всего 256 ip адресов. Из них 2 "служебных". В вашем примере, адрес 192.168.1.0 является адресом сети, а 192.168.1.255 - адресом широковещательной рассылки, а 254 адреса остаются доступными для узлов сети.
Потому что отделяемые два адреса - служебные и их занимать нельзя. Они как бы есть, но их нет.