Как оборудование «понимает» программу?
Для этого ваша программа на компьютере должна осуществлять связь с микроконтроллером (МК).
Допустим, через виртуальный COM-порт по USB отправляете строку "LED 1 ON \n" в случае, когда вы ткнули в графический интерфейс.
Из USB, допустим через переходник преобразуем в UART и это идет на МК.
Т.е. будет цепь PC -> USBtoUART -> МК
МК же должен будет читать UART(придется ему это запрограммировать) и как только прилетит данная строка изменить состояние ноги(это тоже надо запрограммировать на МК), включив светодиод.
Можете глянуть теже мини-проекты по ардуино от амперки, что бы примерно понять, как это программируется внутри, как к МК подключают диоды, кнопки и т.п.
wiki.amperka.ruВот, кстати почти Ваш вопрос
Микроконтроллер не понимает, а тупо исполняет инструкции. Это ваша программа должна правильно сконфигурировать аппаратный порт микроконтроллера, чтобы на его выходе появилась логическая единица и светодиод зажёгся. 
Порядок действий отличается в зависимости от микроконтроллера. Где-то достаточно записать бит по определенному адресу памяти, где-то используются специальные ассемблерные команды для управления портами, и т.д.
Программируется всё это обычно на уровне абстракций, с использованием готовых библиотек. Тот же Arduino поглядите. Глубокие знания электроники требуются для разработки устройств с этими микроконтроллерами.