По-моему наилучший вариант - язык Си в виде бесплатной WinAVR, самой по себе, или в связке с AVR Studio.
Хвалят еще IAR, но она платная.
На ассемблере смысла писать нет, только в исключительных случаях, когда требуется выжать максимум по быстродействию. Но знать ассемблер хоть немного очень желательно, чтобы иметь возможность разбираться в том, что накомпилировал компилятор, если возникают какие-нибудь проблемы.