Not able to use Boolean modifier on concentric cylinder and torus (normals seem ok)
Boolean operators are known to have issues when dealing with complex interactions. Thus, it is advised to prep your meshes to minimize issues from the Boolean operator. This simply means giving the Boolean operator easy places to make cuts.

In your example, all you need to do is to add another torus with the same number of segments as the cylinder. This aligns all the torus edges to that of your cylinder, which eliminates the issue from the Boolean modifier.

Note how the wire-frames don't line up nicely in your torus, so the Boolean modifier will need to make a ton of cuts to try to modify the geometry.



I've added another torus below, this time matching the number of segments to the cylinder, and the boolean modifier works fine.




Another thing to note: having an excessive amount of vertices in close proximity to one another can also cause problems with the Boolean modifier, but that's easily fixed by scaling/moving one of the objects slightly.