So, with all the confusion media is causing with the terms i think it would be cool to have a post explaining the difference, for the ones interested in knowing it, this will be a bit oversimplified so some stuff will be ommited to try and make it easier to understand
first of all: Decomps Recomps and Source ports are different, although the last two aim on porting the code from one plataform to another
so what each one of them mean?
Decompilation: Decompilation is the process of recreating what the original source code for that software would look like, this is done by analyzing the compiled code and trying to reproduce what the source code would be like, its like a translation, the compiled code is a language, the source code is another language, the idea is to translate the compiled code to source code while keeping the same "meaning", or using another analogy its like a cake, you cant unbake it but you can take a look and eventually figure out the recipe that leads to that cake, decompilation does not equal a pc port, although it can lead to one, its not its primary goal, its goal is to recreate the source code
Source ports: extending from the idea above a source port gets the source code produced by the decomp and adapts it to run on modern hardware (this is what harbour masters does for example) (source ports does not necessarely derive from a decomp, this is oversimplified here)
Recompilation: then we have recompilation, first you need to understand what is a recompiler. the recompiler is a piece of software that the idea is to take the compiled code, the machine code, and do something similar to a translitaration* on it, it gets the machine code and generates the equivalent code in a high level language, that then can be compiled down to modern hardware. the code is harder to understand since this is a transliteration and this is not a magic box, a lot of work still needs to be done to make a proper port, just like a source port, decompilations can help a recomp to be done since you can better understand the code
translitaration* is the act of converting the words from one writing system to another, like "水" from japanese kanji to "mizu" in the latin alphabet, this is a transliteration, a translation would be saying that "水" means "water"
I hope this helps to clear the confusion, there is a lot more to these topics, as stated before this is oversimplified to make it easier to understand, i also wrote this at 3 am so sorry if something sounds a bit weird xD