The part I'm specifically having trouble with is the part near the green light, where there are cutouts from the cylinder. I'm not sure how to do those properly. The thing that first comes to mind is creating another object, using an array to copy it around the cylinder, and then using a boolean modifier in difference mode. This works, but it creates an ugly mesh, and it also doesn't seem very flexible, for when you need to do more complex stuff, and working on a mesh that indirectly affects the mesh you're actually trying to affect seems a bit weird. I've also tried doing things like knife project, but it's geometry isn't any better.
So, basically, what I'm asking is: Is there any way for me to do this while keeping my geometry clean?