I would keep it as simple as possible, making the front profile from a 12-sided cylinder, no cap, duplicated, and rotated to match the reference..
Cut them in half, and work under a mirror modifier, back-to-front.
With the Header option 'Automerge' checked, and Snap set to 'Vertex' and 'Active'
K Knife, with C to constrain to horizontal and Z to cut through, cut across the top of the upright cylinder. Cut away the excess of the tilted cylinder, and go round, snapping vertices. Which verts you snap to, and which from, should be clear, bearing in mind you want to preserve the curvature at the front of the object.
Once done, cut through vertically, to get something like the right image. From a top view, maybe correct the width.
Now count the vertices in the back edge, and make a sphere that will match, when quartered. My sphere had 16 segments, for 1/4 of its equator to match 5 vertices.
Discard the 3/4 you don't want, scale and locate for the other end of your object:
ShiftD duplicate its front edge along the length of the object, scaling vertically to reference:
Then, with all open loops selected, CtrlE Edge menu, Bridge Edge Loops:
After a couple of levels of Catmull-Clark subdivision, you're nearly there.
The rest is tweaks, maybe a bit of relaxation in the front curve.. extrusions, a Bevel modifier above the subdivision..
The general rules:
- Keep the polycount to a bare minimum.
- Make the tricky bits first, (exactly circular radii, etc)
- Count vertices, match for transitions