revised - as requested, see here for link to this file
revision v2 - google sheets screenshot of working function at bottom
Countif for your version Excel belongs to a group of 6 functions that split logical criteria into 2 constituents: range & criteria (Office 365 includes min/maxifs to total 8 functions). The consequence of this deals with syntax - specifically, countifs requires a cell range for range arguments (you cannot use an array).
See here & here for further details in this regard.
As such (and as you've prob. come to realise through various attempts), you cannot simply substitute every reference to cell b2 in the 2nd function with fn1 (well, you can, but the result will be erroneous).
You'll need to make a couple of changes:
Firstly - fn2 - whilst the mechanics of sum(countif<>) are appreciable, alter this to something less parsimonious but more robust (and equally 'nifty'):
I've got with the following schema: sum(iferror(match<>,0) as follows (screenshots refer):
=IF(SUM(IFERROR(1*MATCH({"Super","Excellent","Right","Perfect","Great","Ideal"}&"*",B2,0),0)),"WoW "&RIGHT(B2,LEN(B2)-FIND(" ",B2)),B2)

Next, you'll need to create an array out of the function within cell b2 - I've approached this by wrapping an index function around the entire eqn, then substituted into the first instance B2 is referenced within fn2, to give the shorter version of this soln as follows:
=IF(SUM(IFERROR(MATCH({"Super","Excellent","Right","Perfect","Great","Ideal"}&"*",INDEX(IF(SUM(COUNTIF(A2,{"Not","Bad"}
&" "&TRANSPOSE({"WoW","Super","Excellent","Right","Perfect","Great","Ideal"})&"*")),
RIGHT(A2,LEN(A2)-FIND(" ",A2)),A2),0,0),0),0)),"WoW "&RIGHT(B2,LEN(B2)-FIND(" ",B2)),B2)

Finally, whilst seemingly unwieldy, I provide the full version (substituting every instance of cell B2 with the index(,0,0) schema (for completeness!):
=IF(SUM(IFERROR(MATCH({"Super","Excellent","Right","Perfect","Great","Ideal"}&"*",INDEX(IF(SUM(COUNTIF(A2,{"Not","Bad"}
&" "&TRANSPOSE({"WoW","Super","Excellent","Right","Perfect","Great","Ideal"})&"*")),
RIGHT(A2,LEN(A2)-FIND(" ",A2)),A2),0,0),0),0)),"WoW "&RIGHT(IF(SUM(COUNTIF(A2,{"Not","Bad"}
&" "&TRANSPOSE({"WoW","Super","Excellent","Right","Perfect","Great","Ideal"})&"*")),
RIGHT(IF(SUM(COUNTIF(A2,{"Not","Bad"}
&" "&TRANSPOSE({"WoW","Super","Excellent","Right","Perfect","Great","Ideal"})&"*")),
RIGHT(A2,LEN(A2)-FIND(" ",A2)),A2),LEN(A2)-FIND(" ",A2)),A2),LEN(IF(SUM(COUNTIF(A2,{"Not","Bad"}
&" "&TRANSPOSE({"WoW","Super","Excellent","Right","Perfect","Great","Ideal"})&"*")),
RIGHT(A2,LEN(A2)-FIND(" ",A2)),A2))-FIND(" ",IF(SUM(COUNTIF(A2,{"Not","Bad"}
&" "&TRANSPOSE({"WoW","Super","Excellent","Right","Perfect","Great","Ideal"})&"*")),
RIGHT(A2,LEN(A2)-FIND(" ",A2)),A2))),IF(SUM(COUNTIF(A2,{"Not","Bad"}
&" "&TRANSPOSE({"WoW","Super","Excellent","Right","Perfect","Great","Ideal"})&"*")),
RIGHT(A2,LEN(A2)-FIND(" ",A2)),A2))

PS - you might also want to correct the spelling of 'Excellent' (I've assumed 'Excelent' is a typo in your fn3 ☺)
revision v2: google sheets screenshot:
