both of them are equivalent due to the keyword typedef as in first example :
typedef struct test test;
struct test {
bigThing* thing;
anotherThing* thingTwo;
int var1;
int var2;
};
when you said typedef struct test test; this means aliasing the type test to struct test which means that wherever you write test , it's same as writing struct test.
but look in the second example you provided:
typedef struct test {
bigThing* thing;
anotherThing* thingTwo;
int var1;
int var2;
} test ;
due to the keyword typedef , meaning that wherever you write the type test , it's aliased to be
struct test {
bigThing* thing;
anotherThing* thingTwo;
int var1;
int var2;
}
which is the same but it's not convenient to write it like this , if you don't understand the above example , examine the following code :
#include <stdio.h>
int main()
{
struct test{
int x;
int y;
}t1 ;
t1.x = 10;
t1.y = 2;
printf("t1 = {%d, %d}", t1.x, t1.y);
return 0;
}
and here is image of output :

so in the first code example you write , writing test x; is equivalent to :
struct test x;
while in the second code you provided , writing test x; is equivalent to :
struct test{
int x;
int y;
}x;
where both of them are equivalent but for me , it's more convenient to use the declaration of struct as in the first example you provided.