In your script you have two tables concatenated into one: the first Load is a preceding Load that loads from the second load. But the field "class" from the second load is not carried through since this field isn't listed in the first load. But the resulting table nevertheless has 6 rows - five from the first two loads, and 1 from the last.
The bottommost load statement is generating one record '7' (field- class). The middle one is producing record '6' and being referenced in the uppermost load (prceding load) and it iterates over the same record ('6' - but note the value '6' itself is not referred in the preceding load, it is actually being used as a record for iteration) five times and generating 1,2,3,4,5 by the iterno(). Now the two tables (the bottommost one and uppermost one) are getting concatenated to get 1,2,3,4,5,7. Don't get surprised that '6' is not there, because the middle table is not existing separately to be concatenated it is just been used as the input for uppermost table.
To answer the question -why the first load alone can't generate a table - There is no record to be iterated on in that load, hence it can't generate a table. To be able to use the similar load you have to use Autogenerate() alongwith it or some table already existing.