How can I represent a list of words and related words in a relational structure?
That is pretty much how you have to do it. The relationship table for a many-to-many link like that is often called a junction table (though goes by many other names on occasion: map table, mapping table, bridge table, ...).

If you have more than one class of relationship between words (abbreviation, antonym, synonim, ..) than that should be in the junction table too.

If you don't have multiple relationship types then there may be no need to have WordRelationshipId: the most efficient way to store what you currently have in SQL Server is just HeaderWordId, WordID with the two columns together being the primary key and that key being clustered (though as a matter of style/consistency some people prefer to have a separate surrogate key for all entities, and some frameworks baulk at composite PKs, so YMMV).