- увеличьте на 1 RowCount и ColCount дабы учесть наличие фиксированных их
- RowCount надо считывать с помощью ReadLn, чтобы перейти на следующую строку в файле
- поменяйте местами циклы по i и k, надо же сначала считывать строки, а потом разбирать их на элементы колонок
- переставьте Readln(f, strTemp) выше, ведь строку надо сначала считать, а потом разбирать
- ищИте пробелы в строках(вы ничего не ищите, пробелы не стоят)
- ваши циклы по i и k фактически не работают; вы проходите весь файл сразу в while, поэтому можно, например, заменить while на конструкцию if Eof(F) then Break
- в самом теле цикла наворочено лишнего; уберите strTemp1 и strTemp2; нужно выделять подстроку, напрямую присваивать её ячейке и удалять из считанной строки с помощью Delete, тогда не будет у вас ни символьного массива, ни перехода, после заполнения трех столбцов строки, на следующую строку
- у TStringList(проперть Rows у TStringGrid) имеется такая вещь DelimitedText; ознакомьтесь, вдруг поможет
- отформатируйте текст нормально, непонятно какой end - откуда; вам же будет легче в программе разбираться
А по 1-ой части задания у вас трудности не возникли... Зря вы так считаете. У вас там не сохраняется размерность массива, и все значения пишутся с новой строки, а не построчно. Фиксированные + лишние строка и столбец пишутся кстати(вернее некстати

) тоже, т.е. подкорректируйте пераметры цикла.