Допустим, у меня есть:
uint8_t array[] = {1, 2, 3};
extern uint8_t array[];
Создает ли это копию массива переменных в main.c?
Нет, он говорит компоновщику "где-то есть переменная с таким именем, пожалуйста, указывайте ссылку на нее всякий раз, когда она упоминается".