Checking is always worth it: it saves a heck of a lot of grief later on!
The code isn't bad at all - it could possibly use disposal of the multiple-array-access code, but the compiler will likely optimise that anyway.
You could try
for (i = 0; i < count; ++i) {
if ((children[i] = atoi(lines[i + 1])) <= 0 )
return(0);
}
Which
might be slightly more efficient, but less readable.