DAGs, Blocks, Files and Objects

I’m curious when and why one might use these different types of data on IPFS. Files seem self evident but I noticed that dag is exposed in the API and I wanted to know when an application might utilize that? Same for blocks. I’ve read so far that objects are a legacy notion so I’m less interested in them.