If you put a \0 in a string that is a way to tell the compiler that this is something special. Specifically it tells the compiler that it is a null. Also these are generally tucked inside of strings.
To answer your question I don't think that either is more standard. The more standard way to do this is:
char greeting[] = "Hello";
or more generally:
const char *greeting = "Hello";
This code:
char greeting[] = {'H', 'e', 'l', 'l', 'o'};
printf("Greeting message: %s\n", greeting );
prints out a strange character because the string is not explicitly terminated.