In case there is some confusion about the difference between the two operations, I hope this post helps.
All images consist of the actual image data (i.e. RGB values) and color profile metadata which states how the data should be output. If an image file lacks the metadata, it is usually interpreted as sRGB.
Assigning a color profile to an image doesn't change the image data at all. It only changes the metadata that tells the viewing software how the data should be interpreted and output. If you assign different color profiles to an image, it will look different, eventhough the actual data hasn't changed. This is what AssignICCProfile does.
Converting an image to another color profile in turn changes the actual image data to match the output of the source profile. Eg. if you convert an sRGB image to AdobeRGB, the color management system changes the RGB values to make the AdobeRGB image look like the original sRGB image as accurately as possible. This is what ICCProfileTransformation does.
Since the gamuts are different, making a perfect match isn't always possible. In such cases a "rendering intent" is used. A rendering intent defines how the out-of-gamut colors are be handled. There are various rendering intents that handle the situation differently.