SetGeoTransform() does not rotate the image. It effectively just tells a conformant viewer which way north is (and not all viewers are conformant). So, if you have an image where East is up (for example), the geotransform is used to say that each step along the scanline is a step South and one pixel down from the top of the image is a step West (in this example).
gdal_translate will take this geotransform with it to the new file, but it still won't be actually rotated. The -projwin option is not for rotating either but for selecting a subwindow. You want to use gdal_warp which will account for the geotransform as it resamples the image and thereby burn the rotation into the new output file (as per your comment below the original post).