Пользователь вводить данные, потом они сверяются с БД и если все правильно то должна генерироваться сессия?
Верно.
Предположим мы сгенерировали сессию, а что дальше, грубо говоря как понять что Иван это Иван а не Коля?
Ну, внутри сессии в зашифрованном виде обычно хранится id юзера.
session.Values["user_id"] = "123"
Следуйщий вопрос, за что отвечает "something-very-secret" в переменной store и зачем он нужен?
Это ключ шифрования. Чтобы в куках браузера хранить не в открытом виде данные, а в зашифрованном.
И последний вопрос, на странице Gorilla sessions наткнулся на пакет https://github.com/boj/redistore , зачем он нужен?
Это способ хранения сессий на бакэнде, в данном случае в базе данных редис.
Но, к этому способу стоит подходить, когда он на самом деле нужен.