InnoDB stores the table rows in a clustered index based on the primary key. So, the data_length
shows the size of pages occupied by the primary key.
index_length
shows the size of pages occupied by secondary (non-primary) indexes.
Re your comment:
Yes, it's unnecessary in this table to create an extra index on the first column of your primary key. MySQL doesn't prevent you from creating such a superfluous index because it trusts you know what you're doing. :-)
You can use a tool like pt-duplicate-key-checker to analyze your metadata for duplicate indexes. In one such case I found 400GB of wasted space due to duplicate indexes!