Your proposal for bitfield manipulation operators is very interesting, but I find the syntax confusing, because it is somewhat inconsistent with the C conventions.
In your example:
int counter = value[14:10];
the width of the bitfield is not obvious. As a matter of fact, people unfamiliar with the construct may expect the width to be 4 bits or perhaps 10 bits. It is inconsistent with both the C indexing paradigm and the standard bitfield syntax where the number of bits appears after the colon. I would favor this alternative for the same bitfield:
int counter = value[10:5]; /* extract 5 bits at bit offset 10 from the integer value */
This syntax is more consistent, as you can see in this classic example:
int red = rgb[0:5];
int green = rgb[5:6];
int blue = rgb[11:5];
This syntax is the same for storing values as well or even updating them:
value[10:5] = 43; /* should produce a diagnostic: 43 does not fit in 5 bits */
value[10:5] += 1; /* much more concise than the C alternative, and better code generated too! */
Both the offset and the width could be unsigned integer expressions with some limitations. We probably do not want to integrate this construct generically into the type system and create pointers or references to bitfields, fixed or variable, but the above constructs can be implemented simply and do simplify the programmer's life.
Finally, I have written a lot of database code dealing with bitmaps and wished for a good syntax for arrays of 1, 2 or 4 bit values. The same syntax could be used for this purpose on integer pointer types. For non trivial bit widths, it is very cumbersome to write the code by hand and even more complicated to use the best underlying type to take advantage of target specific opcodes. Definitely something you want the compiler to take care of.