Это называется категориями значений.
Литературка для чтения.
en.cppreference.com/w/cpp/language/value_category
Коротко.
Объявление типа `int` - тип с хранением по значению.
Объявление типа `int*` - тип с хранением по указателю.
Объявление типа `int&` - тип с хранением по ссылке.
Любая из этих форм записи типа может быть использована для определения переменных, параметров и результатов функций.
for (auto card : hand)
Говорит что card принимается по значению через копирование содержимого итератора. Время жизни card ограничено пространством цикла.
for (auto& card : hand)
Говорит что card принимается по ссылке содержимого итератора.