Transpose only works on matrices that are rectangular in both dimensions, in which they are getting transposed.
z1[i_] = z1[i, #] & /@ Range[3]
t1 = Range[3]
data = Transpose[Prepend[t1]@Table[z1[i], {i, 1, 10}]] // TableForm
works perfectly fine. Please note that in most cases it is more sensible to store data in lists, not Grids, TableForms etc. since it will be easier to access. If you need to access the data of a simple TableForm or similar constructs it can help to use "// InputForm". It shows that TableForm[x] internally is TableForm[x] meaning you can access its data by doing TableForm[x][[1]]. It does not just replace the head of x.
Edit: You seem to be confused about Lists and their elements. You might benefit from looking at the respective documentation.