All modern showerheads sold in the US have a maximum flow rate of 2.5gpm. You can only get about 70% of the water out of a WH before it gets noticably cooler. You might want to just run it into a bucket and see how much it is actually flowing.

so I tested the water heater (40 gallons) by using a 5 gallon bucket and got about 27 or 28 gallons before it started to get cold so I think the water heater is fine. then I saw how much water was coming out and I think my current shower head is using like 5 gallons a minute as in 15 seconds we were over 1/4 of the bucket full and it was starting to get heavy.

I am attaching some pictures. what do you guys recommend? putting a bushing to attach the shower head or do I need something more drastic?

The showerhead probably unscrews, and you can replace it with a new one. You might be able to get creative and (if you can find one) maybe insert a washer in it to restrict the flow some. If you raise the WH temp setting, you'll functionally get more hot since you'll dillute it with more cold. For safety, you may want to install a tempering valve at the WH. This would limit the max outlet temperature so you'd not have an accident at the shower, but still get the benefit of a larger amount of hot water available.