Думайте о структуре как о шаблоне для нового объекта.
Строка Program prog
создает новый объект структуры на основе шаблона, определенного вверху.
Итак prog.cm=0;
означает, что да, вы инициализируете поле конкретных объектов cm на ноль.
typedef существует просто, поэтому вам не нужно писать struct prog 'variableName'
, когда вы хотите создать новый объект структуры