Проблема в том, как вы передаете обратно новый объект. Присвоение нового объекта указателю не будет работать так, как вы его написали. Вместо этого вы должны вернуть объект из функции addTermCode ().
В основном ваш указатель list2 по-прежнему равен нулю. Вернуть вновь созданный объект из этой функции и назначить его для list2.
Если нет, вам нужно настроить код так, чтобы указатель был правильно назначен.
int addTermCode(termination_code **infoTerm, int termCode, unsigned long timerInfo)
{
....
*infoTerm = node;
}
int main ()
{
termination_code *list2=NULL;
//Add A single node and print it.
if(addTermCode(&list2, 12, time(0))==0)
printf("All OK node added\n");
printf("Entered info :%d %ld\n",list2->terminationCode,list2->time);
}