Этот синтаксис используется для обозначения битовых полей (то есть полей битов, которые являются более узкими, чем сам тип данных), поэтому «x» в вашем примере действительно использует 1 бит целого.
Более полезным примером может быть что-то вроде
char x:4;
char y:4;
Это упаковало бы два 4-битных поля в один байт.
Преимущество, конечно, состоит в том, чтобы сэкономить место в архитектурах, где каждый байт имеет решающее значение.