Всё достаточно просто.
char str[] = "Hello"; - здесь создаётся массив и инициализируется символами из строки.
const char *str = "Hello"; - здесь создаётся скалярная переменная-указатель и инициализируется указателем на строку в памяти.
const int *mas = { 4, 5, 7, 9 }; - здесь вы пытаетесь создать переменную-указатель, а инициализировать её как массив, что недопустимо.
const char *strArr[] = { "Hello", "world", "and" };
- здесь создаётся массив указателей и инициализируется массивом указателей на строки. Правильно читается как
(*strArr)[], а не
*(strArr[])