Which save file actually holds the information on the blocks?

All of those are your world's save data. There's no single file that contains all the block data — it's spread out amongst multiple files within each dimension folder. Leaving any of those out will lose some parts of your world.

(The only exception is the session lock file: it's only used to make sure Minecraft and some other program (like MCEdit) don't both try to change the world at the same time, so it doesn't contain any actual data and you should delete that if you're setting up a new server using this world save.)

It's possible to selectively leave out some parts, such as “resetting” your Nether by leaving out the DIM-1 folder, or removing specific chunk files inside a dimension folder to reset that chunk. But if you want everything, you just copy over the whole folder.

If the world is corrupted somewhere and you need to leave that part behind, you will have to figure out where in the world that corruption is, then what files contain that part of the world, and then leave that set of files behind in the transfer. Note that many of those .dat files contain the information necessary for mods to remember the non-block parts they add to the world, and figuring out what they contain will require consulting mod documentation or the mod author.