You can use set stream position which sets the current point in an open stream. Then you can use Read which reads one expression from an input stream, and returns the expression with byte, character, expression, Number, Real, String or Word options. Something like:
Edit 1 with ReadList
n = 4;
str = OpenRead["data.txt"];
Skip[str, Record, n - 1]
ReadList[str, {Word, Number, Word}, 100]
Close[str];
Edit 2 with Read and Loop no abort check
data = {};
n = 4;
str = OpenRead["data.txt"];
Skip[str, Record, n - 1]
For[i = 0, i < 100, i++,
{a, b, c} = Read[str, {Word, Number, Word}];
data = Append[data, {a, b, c}];
]
Close[str];
data
Edit 2 with Read and Loop with abort check
data = {};
n = 4;
str = OpenRead["data.txt"];
Skip[str, Record, n - 1]
For[i = 0, i < 100, i++, CheckAbort[Module[{a, b, c},
{a, b, c} = Read[str, {Word, Number, Word}];
data = Append[data, {a, b, c}];
], Close[str]]]
Close[str];
data