Figured it out. I think it's because of the fact that t1[5] is converted to t1 + 5 and since t1 is currently at hello'\0' (NULL) so when I try to put value at t1[5] it will actually be t1 + 5 which happens to be 5 elements from it's current position which happens to be NULL. Is it correct?
strcat is what my friend was trying to do. I think the reason, as I mentioned above, is that array always indexes with respect to the starting address whereas pointer indexes with respect to the current address. That's why NULL in string 1 was there and was not working as expected.