Quando você declara um struct você está definindo um novo tipo de variável. Assim como existem os tipos de variáveis que vem “de fábrica”, você pode definir o seu próprio tipo de variável utilizando as structs. Porém, declarar o tipo da variável não é suficiente, você tem que declarar a variável em si. Esse código que você postou tem 2 partes:
1 - A declaração do novo tipo de variável:
extern struct var_type{
char var_name[32];
variable_type var_type;
int value;
}
2 - a declaração de um array de variáveis desse novo tipo, onde NUM_GLOBAL_VARS é o tamanho do array:
global_vars[NUM_GLOBAL_VARS];
Um exemplo melhor seria o seguinte, imagine que você vai escrever um programa que permite o cadastro de até 100 clientes, isso ficaria assim:
#define NUM_MAX_CLIENTES 100
typedef struct {
char nome[255];
double limite_credito;
int num_compras;
} cliente;
cliente cadastro_clientes[NUM_MAX_CLIENTES ];
e aí, a partir de uma função você poderia fazer:
//cadastro do cliente numero 10
cadastro_clientes[10].nome = "Joao da Silva"
cadastro_clientes[10].limite_credito = 1500.00
cadastro_clientes[10].num_compras = 17