In the first case you have a string literal which are arrays of char, it will be converted to a pointer to char in this context.
In the next two cases you are attempting to use list initialization to initialize a pointer which will attempt to convert the first element of the list to a pointer which generates a warning since neither a char or an int are pointers, the same way this would:
const char *b = 'a' ;
If you had valid pointers in the list it would work fine for the first element but would be ill-formed since you have more initializers than variables.