The reason it's hard to find a quick and easy answer to your question is that there really isn't one. The closest thing to a quick and easy answer that is right is:
Your ISP can see every byte of data you transmit on the internet, and every byte any server sends to you across the internet.
They have the physical wires you're sending bits over. They not only can read this data, they are obliged to read it, in a sense, because they need to route it to the right places.
However, what that doesn't account for is the readability of those bits. Some protocols, like http, send everything "in the clear," meaning anyone who can read the data on the wire can get access to everything you transmitted. Other protocols, like https, encrypt the data so that the ISP can see bits were transferred, but they can't glean any meaning out of the data.
This is all very protocol specific, so there is no one answer. For example, with HTTPS, the ISP can know the IP address of the server you are talking to (because it has to be sent "in the clear" for the internet to work), but they don't get to know the hostname. In most cases, they can do a reverse IP lookup and figure out the host name, but a single server may serve many host names. For all we know, the servers that service www.google.com also respond to https queries where the host name is yahoo.com, and provide a different (secret) API to people to access it that way. All the ISP knows is that you accessed 184.108.40.206.
Digging deeper requires a very careful threat model. If your adversaries are Three Letter Agencies or major nations, you may find that you leak information in timing or file sizes, and they may be able to do something with that. Regardless, the amount of information that can be gathered is 100% dependent on the protocol you are using.
As for your email, the answer is "it depends on how you access your email." Email goes over different protocols. GMail, for instance, goes over https. Many ISP provided emails use POP. Their behaviors are very different.