Haven't tested this, it's SQL from the database in my head :-) I think the thing you're missing is referencing to ingredient_all table twice, first to do the initial lookup against ingredient_similar, and second to reference ingredient_similar's result back to a name.

Give it a go and let me know what happens.

For all the ingredients:
SELECT i.IngredientName, r.IngredientName FROM ingredient_all AS i, ingredient_all AS a, ingredient_similar AS s
WHERE i.IngredientID = s.IngredientID AND a.IngredientID = s.IngSimID

For a single recipe:
SELECT i.IngredientName, r.IngredientName FROM ingredient_all AS i, ingredient_all AS a, ingredient_similar AS s, recipe_ingredient AS r
WHERE i.IngredientID = r.IngredientID AND i.IngredientID = s.IngredientID AND a.IngredientID = s.IngSimID

And BTW, try using shorter table and field names - the long and too-similar names made things fairly confusing. Eg. recipeIng.id rather than recipe_ingredient.recIngID