Yes, that would be it, but you can simplify:
Table Element idElement | name
Table Weakness idRow | idElement |idElementStrongAgainst
No need to add a strength table, you just have to look at the weakness table entering by the other column.
So to find the strengths of water you do
SELECT strVS.Name
FROM Element AS el
JOIN Weakness on el.idElement = Weakness.idElement
JOIN Element As strVS on weakness.idElementStrongAgainst= strVS.idElement
WHERE el.Name = 'water'
and to find the weaknesses:
SELECT weakVS.Name
FROM Element AS el
JOIN Weakness on el.idElement = Weakness.idElementStrongAgainst
JOIN Element As weakVS on weakness.idElement = weakVS.idElement
WHERE el.Name = 'water'