Как правильно прописать логический оператор «and» или «&&»?
empty($a && $b) - это empty(true|false) что кагбе бессмысленно. 

второй вариант.
Почитайте про приведение типов в пхп.
В первом варианте пыха приводит а и б к булеву, вычисляет результат и, зачем-то, вычисляет от него эмпти - совершенно лишнее действие.

Второй вариант выглядит правильнее