Explanation
The formula above evaluates something like this:
=SUM(INDIRECT("'"&B6&"'!"&C6))
=SUM(INDIRECT("'"&"Sheet1"&"'!"&"data"))
=SUM('Sheet1'!data)
Once the string is assembled using values in B6 and C6, INDIRECT evaluates and transforms the string into a proper reference.
Note you can refer to a named range in a formula without using INDIRECT. For example, the formula in D6 could be written:
=SUM('Sheet1'!data)
However, if you want to assemble the reference as text, and have Excel treat the text as a reference, you need to use INDIRECT.
Note: The single quotes are added in the formula above so that the formula will work when a sheet name contains spaces.
Explanation
The INDIRECT function tries to evaluate text as a valid reference. In this case, the sheet name is pulled from column B and concatenated with an exclamation point and the text A1:
=B5&"!A1"
="Sheet1"&"!A1"
="Sheet1!A1"
The INDIRECT function then coerces the text “Sheet1!A1” into a valid reference, which is passed into the SHEET function.
The SHEET function then returns the current index for each sheet as listed.