Кратко — они одинаковые по смыслу, но and имеет меньши приоритет по сравнению c &&.
Старайтесь всегда использовать &&, потому что он работает аналогично в других языках. В то время как оператор and — специфичен именно для Ruby.
Подробнее смотрите: Чем отличается оператор and и && (1), Чем отличается оператор and и && (2)