Прежде всего, строка как:
0 => h
1 => e
2 => l
3 => l
4 => o
5 => \0
6 => (space bar)
7 => w
8 => o
9 => r
10 => l
11 => \b
12 => d
теперь ваша команда:
printf("%s \n",str+str[4]-*str);
C выполнила следующую вещь
str => point of starting printing
str[4] as above is o
*str as above is h
Thus o - h = 7 [i.e. ascii value 111 - 104]
printing would starting from character 7 i.e. [str+7]