Задал си въпроси на които трудно може да се отговори с два реда.
Има различни програмни езици (от ниско и високо)ниво.Общо взето всеки един от тях си има особености и трябва за себе си да решиш с какъв ще работиш.Езиците от ниско ниво ,като асемблера,изискват познаване на вътрешната архитектура на процесора.Така,че ако решиш да програмираш с него ще трябва да почетеш и да понаучиш основите на цифровата електроника.А след това и да познаваш добре процесора,които ще програмираш.Не е толкова трудно ,колкото изглежда.На мен лично ми се струва много по интуитивно ,но това е мое мнение и не държа да е универсално.Езиците от по-високо ниво не изискват много познания по вътрешната архитектура на контролера.Можеш да ги ползваш за различни контролери стига да имаш подходящия компилатор.
Всеки един език си има и предимства и недостатъци.
Истината е ,че трябва да пробваш и едното и другото,така сам за себе си ще определиш къде ти е най-лесно и приятно.
Другата безкрайна тема,кои контролер е по-добър също ми се струва безсмислена за коментар.Важно е за какво ще го ползваш и кое ти е приоритет.Ресурсите на контролера или цената.
За да започнеш от А и Б ти трябва и ясно (разбираемо) написана литература.Такава има на български за най-оспорвания и хулен процесор PIC16F84.Има две книги и много примери и схеми,които можеш да изпълниш с малко средства и за кратко време.Можеш да почнеш от там .А после да разбереш ти точно ,какво ти трябва,защото това вече е индивидуално.