This is quite hard to grasp without a c3p file actually. I can give some general tips though
1- Why is the function IsIngredientAvailable returning FALSE even though inside the function the return value is reported TRUE?
==> watch out with rules here. I always use a local variable called "result_value" or something, and in the very last action of the function (outside of any loop or condition) I just return that value. That's handy because you could debug this using console.log for example, and see what your result value becomes as you loop through. Debugging loops is always a bit of a hassle, but I usually use either a debug label and append some text as the loop goes on, or use console.log to track what variables become all through the loop.
2- Why is it that I have to store the return value of a function in a variable and then run conditions over that instead of directly running conditions over the function?
I presume that what you mean is where the "hasValue" needs to check if a recipe contains an ingredient? I would use a separate function for that returns true or false
3- Anyway to structure the code so I don't have 3 loops over the same data just to get to what I want?
Hard to see without the c3p file, but I get the feeling that you should first loop through the crafting stations and add the ingredients to the array. And then UNINDENTED go loop trough the choosen ingredients. If you have 3 stations, and they all have 1 ingredient... You loop through the stations: in the first iteration, the ingredient array will have one value, and will never match a recipe, the second time round, still not, the third time round, maybe.
So, again, I don't know exactly the circumstances, and game logic, but I would think that you would first do the filling of the array. and then, NOT as a sub event, on the same level as the for each loop, do the rest?
Personally, I'm a huge fan of functions and separating parts of the logic into functions even though they only get used once.
If you're interested you can check out my youtube channel with a lot of useful examples. In most games I use a lot of functions, some of them even recursive.
youtube.com/channel/UCZ6QjvqEs9dR2miRnfFqIpQ
Hope my tips help.
If you send the c3p file, maybe I can be of some help debugging it.