Почему не распознается переменная при ее подстановке в строку?
Первый вариант правильный. Что именно у тебя возвращает undefined? Функция val()?

Попробуй задебажить это поэтапно:

Создай константу в которой будет хранится строка с нужным тебе селектором:
const selectorString = `.c_ipt_surname${i}`
console.log({ selectorString })
Получи DOM элемент:
const surnameElement = $(selectorString)
console.log({ surnameElement })
Получи значение, которое ввёл юзер:
const surname = surnameElement.val()
console.log({ surname })

Последним пунктом я бы посоветовал выпилить jq и больше никогда им не пользоваться. Но этот пункт слишком opionated, я не стал его включать.
Решение вопроса:
Необходимо было использовать id
tempvar_surname = $(`#ipt_surname${i}`).val();