Hi I have used decimate before but is there a better way to reduce the polygons on an object such as the one in image 1?
The same result as in cgslav's answer is a little more tedious in Blender 2.79 but just as easy. The starting object:
Duplicate the Object and hide the new object. Make sure the copy that is still visible is selected. Enable AutoSmooth in the Object Data Tab in the Properties Panel.
Add a Bevel Modifier and a Data Transfer Modifier. Set the other Cube as the Source Object, turn on Face Corner Data and set it to Projected Face Interpolated. Turn on Custom Normals and tweak the Bevel width to your liking. Segments needs to be an odd number for it to work, however there is probably no need for 3 or more Segments.
The final object has smooth shading and a minimal amount of Polygon. You can do the same steps in Blender 2.8, but checking Harden Normals in the Bevel settings as cgslav suggested is indeed a legit shortcut.
I see that you are using Blender 2.8 so you can make this object super low poly with new features in Bevel modifier.
You can create object in two ways. Quad based (edge loops) or simple Boolean.
Add Bevel modifier, check Harden Normals, switch mode to Angle and optionally change Outer Miter to Arc.
To be able to see the result, you will need to turn on Autosmooth and of course Shading Smooth.
If this object is a pure Catmull-Clark subdivided object you can try my unsubdivide script ;)