MySQL 100% CPU Usage Reading from a 500.000 Rows table
How much RAM?  Many of the entries in my.cnf look "too big" unless you have a lot of RAM.

Please use SHOW CREATE TABLE; it is more descriptive than DESCRIBE.

InnoDB would be faster because the data is clustered with the PRIMARY KEY.

What is happening...  Each run of that query is scanning half the index, starting with IPLONG=ip_from and going to the end of the index.  Meanwhile, it is reaching over to the data (since it is separate in MyISAM) for the other columns.

Are the ip_from..ip_to pairs non-overlapping?  If so, you could check one row, then quit.  If they are overlapping, there is no hope.

The LIMIT 1 will not be sufficient without ORDER BY ip_from.

You realize that the table cannot handle IPv6?

Make sure that country_code is CHARACTER SET ascii.  Don't include country_name in the same table; build a lookup (normalization) table mapping country_code to country_name.