И вообще, что проверяется публичным ключок - сам токен или его подпись.
Подпись в самом JWT (JWS).
при ее валидности потом декодируется вручную payload токена и вычисляется по меткам времени его валидность
Всё верно.
где лучше производить валидацию токена в случае SPA приложения: на фронтенде при каждом запросе к серверу, либо же на бэкэенде получаю при каждом запросе access_token с фронта?
На сервере, куда делаются защищённые запросы, естественно. Валидировать токен на фронте бесполезно, а отсутствие валидации на сервере означает, что сервер будет не защищён. Любой злоумышленник сможет авторизоваться под любым пользователем отправив свой JWT.
Единственное, что стоит проверять на фронте, это срок действия токена. Если он истёк, нужно получить новый токен.