Нет, groupName2 = malloc(strlen(groupName + 2) + 2);

Нет,

groupName2 = malloc(strlen(groupName + 2) + 2);

неверно! При groupName состоящей из 1 символа strlen() вернет неизвестно что.

Вообще правильно вот так:
groupName2 = malloc(strlen(groupName) + 1);

так как там в комментарии подписано:
groupName2[0] = 1; // This is because the DB requires the groupname to begin with the second character in the string 
groupName2[1] = 0;

т.е. DB требует, чтобы groupname начинался со второго символа, поэтому они в первый пихают 1, затем сразу 0, т.е. длину строки делают = 1. А затем вызывают strcat() - которая объединяет 2 строки:
strcat(groupName2, groupName);

т.е. в строку groupName2 добавляют содержимое строки groupName, таким образом длина строки groupName2 должна быть на 1 больше чем groupName, т.к. в начале записана 1.