Я правильно понимаю, что реселект это просто функция, которая
1) Возвращает нужную часть стейта
2) Если требуется, то изменяет, вычисляет стейт и делает 1)?
да, чтобы при одинаковых состояниях не прогонять операции над данными, он будет их прогонять, если они изменились