User controls are not reusable across projects without a lot of pain. Namely, the .ascx files have to be available to each of the referencing projects, not just the assembly. This makes updates and deployments difficult. Possible, but very difficult depending on your environment.
Your best bet is to create a new assembly with Server Controls. The primary difference is that a server control is 100% code and easily transportable across projects. This means that you can't create composite controls by simply dragging and dropping them onto a design surface. However, you do have full control over the html emitted and can add the controls to a different project simply by referencing the assembly.
For a walkthrough on creating custom server controls see: http://msdn.microsoft.com/en-us/library/yhzc935f.aspx