Ugh. Why do you have code in .h files ? You shouldn't do that. Either name them ".cpp", and they'll be compiled separately, or .ino, and they'll be concatenated to your sketch before compilation...
(But that shouldn't affect the sketch size. So, on to your questions:)
Can I turn on Link Time Optimisation? I have read about it not being safe?
LTO is on by default for the Arduino AVR boards, so it can't be THAT awful. I guess you're using MiniCore to be able to get back the bootloader space? Probably only you can try it out... (Size goes down to 26764 bytes when I compile with lto, here.)
atoi() is apparently 600 bytes of code, can I do that differently?
How are you telling that? I don't even see atoi() in the binary. (maybe you mean atol()?)
I think it can be improved by having your own special case code that isn't as careful...
Top memory consumers:
[b]avr-nm -SC --size-sort[/b] /tmp/Arduino1.8.12Build/*.elf
0000181c 00000180 T makeTime(tmElements_t const&)
0000385c 0000019e T Si5351::set_pll(unsigned long long, si5351_pll)
000051dc 000001b2 T JTEncode::wspr_message_prep(char*, char*, unsigned char)
0000161c 000001b8 T breakTime(unsigned long, tmElements_t&)
00000520 000001d2 T loc8calc()
00003c04 00000200 T Si5351::reset()
00003f92 00000214 T Si5351::set_ms(si5351_clock, Si5351RegSet, unsigned char, unsigned char, unsigned char)
000055e0 0000021c T JTEncode::wspr_bit_packing(unsigned char*)
00004e66 00000240 T __vector_24
0000538e 00000252 T JTEncode::jt9_bit_packing(char*, unsigned char*)
000032f8 00000280 T Si5351::select_r_div(unsigned long long*)
00003578 00000288 T Si5351::select_r_div_ms67(unsigned long long*)
00005cf4 0000029a T JTEncode::init_rs_int(int, int, int, int, int, int)
000012ea 000002f2 T TXtiming()
0000215e 00000384 T TinyGPSPlus::endOfTermHandler()
00002f64 00000394 T Si5351::multisynth67_calc(unsigned long long, unsigned long long, Si5351RegSet*)
00000834 000003ea T loc_dbm_telem()
0000272c 000003ea T Si5351::pll_calc(si5351_pll, unsigned long long, Si5351RegSet*, long, unsigned char)
00002b16 0000044e T Si5351::multisynth_calc(unsigned long long, unsigned long long, Si5351RegSet*)
000041a6 000007fa T Si5351::set_freq(unsigned long long, si5351_clock)
What can I do with or in the library's I am using?
It looks like your Si5351 library is really rather bloated. 64bit integers, almost 2k for just set_freq() - you're essentially doing FM with a set of fixed frequencies, right? Those could be pre-computed, and that would probably save a lot of space. (but it sounds like pretty obscure code.)
Frankly, if you're that close to the limits of the processor, on code that isn't even DONE yet, you should find a board that has more resources.