Should I create seperate referenced table or go with serialized data in a column?
No.  InnoDB does something like that for you.  If a table has any bulky TEXT or BLOB columns, those columns are stored "off-record".  This means that they go in a separate block(s) on disk.  Meanwhile, if you read only other columns, you are not 'wasting' time fetching the bulky columns.

Corollary:  Do not use SELECT * ...; instead specify the columns you really need.

(History:  Back when ENGINE=MyISAM was the typical table type, your idea was a good one.)

A tip:  Consider COMPRESSing and UNCOMPRESSing the JSON column in the client.  This may shrink your 7GB to 2-3GB, and speed up queries that do need to look at the JSON (because I/O costs more that CPU).