C言語の基本で、教えてください。
typedef と初めて接するのですが、分からないことがあります。
以下は、ネットにあったソースです。(作者さん、勝手に引用と改変すみません)

#include <stdio.h>
#include <stdlib.h>

typedef enum{
RUNNING   = '1',
STOPPED   = '2',
FAILED    = '3',
HIBERNATING = '4'
} MACHINE_STATE;  // (a)

int main(void) {
int input1;
MACHINE_STATE state;   // (b)
// char state;         // (c)

printf("type [1-4]: ");
input1 = getchar();
state = input1;       // (d)

switch (state) {
case RUNNING:   printf("running\n");  break;
case STOPPED:   printf("stopped\n");  break;
case FAILED:    printf("fail\n");    break;
case HIBERNATING: printf("hibernated\n"); break;
default:                  break;
}
  while(1){}
}

typedef unsigned char UCHAR と書くと、以降のところで 
UCHAR c; と書けば、unsigned char c; と同じ作用になると本などに書かれていました。まさにtypedefだと思います。
ところが上記のソースだと、typedef〜(a)までの間に、unsigned int とかの文字が書かれていません。
そして(b)で、MACHINE_STATE型でstsusという変数を取る、ということをしています。
ここまでの行でMACHINE_STATEが unsigned char なのか、intなのか、型のことに触れていません。
1. この場合、MACHINE_STATE は、何型になるのでしょうか。
2. このようなtypedefの使用は、(c)のように普通に取るのと比べて、どういうメリットがあるのでしょうか。
3. また、(d)の点で、input1を あえてstatusに入れ直していますが、これは、なぜなのでしょうか。
宜しくお願いします。