To answer your first question, the data is hosted on devices part of the distributed network.
For example, if you have a static webpage it may either be present on every node in the network (so anyone else accessing your webpage would only be making a local request to their copy of the data) OR the webpage would be split up into many pieces distributed amongst all the nodes, so say your webpage is split into n chunks you fetch each chunk from Node_1 ... Node_n and use some algorithm to stitch it back together.
These are obviously over simplifications, but you should take a look at how Gnunet, Freenet, and Zergnet(?) and how they approach the distributed web. Also, looking at p2p networks might give you an idea of how this works as well.