1) По сути сессия с абстрактной точки зрения - какая-то запись где-то на сервере. Данные сессии могут храниться в БД или вообще в файле. Простейший случай идентификатора сессии: хэш таймстемпа, уникальных данных юзера(с точки зрения приложения), уникальных данных клиента(браузера). Очень хорошо, если есть время жизни при использовании Redis или Memcached(Можно, конечно руками сделать).
2) В принципе вполне корректно. Для безопасности, конечно, здорово, если ещё хранится не чистый идентификатор сессии, а каким-нибудь образом зашифрованный идентификатор(а расшифровать можно лишь у вас на сервере, так как только вы знаете ключ).