Some save methods are legacy ones. That’s why we have them all.
But there is some difference between using SaveOptions and not using it.
When you call Image.Save() you save the image to the same location (that you specified when called Image.Load and in the same image format.
When you call Image.Save(Stream stream) you save the image to the specified stream in the same image format.
When you call Image.Save(filePath) you save the image to the specified location in the format defined by filePath extension.
When you use Image.Save(filePath/Stream, ImageOptionBase saveOptions) you can export the image in any supported formats by using necessary saveOptions, for example:
using (TiffImage image = (TiffImage)Image.Load("some-tif.tiff"))
// save as png
image.Save("output-image.png", new PngOptions());
// save as gif
image.Save("output-image.gif", new GifOptions());
// save as pdf
image.Save("output-image.pdf", new PdfOptions());
// save as svg
image.Save("output-image.svg", new SvgOptions());
// and so on
When you use Image.Save(filePath/Stream, ImageOptionBase saveOptions, Rectangle rectange) you can export a part of image defined by rectange (cropping) in any supported formats by using necessary saveOptions.
When you use Image.Save(Sting filePath, any parameters, bool overWrite), the export will be performed correctly only if a file filePath does not exist.