все *.c, *.s (в чем разница ?)
По расширению обычно определяют тип файла:
.s (строчная) - исходник на gnu-as, одном из диалектов ассемблера, не нуждающийся в препроцессоре
.S (заглавная) - то же, но перед компиляцией будут обработаны #include, #define и тому подобные директивы препроцессора
Впрочем, не уверен, справится ли WinAVR: в windows нет разницы между заглавными и строчными буквами. Но каким-то образом они хранятся, так что может и обрабатывать.
.asm - AVR assembler (речь идет о конкретном применении, наверняка другие ассемблеры тоже считают его своим)
.c - исходник на С
.cpp - исходник на С++
.h - заголовочный файл к C/C++
Для подробностей по расширениям man gcc