Both formats do the same basic job: they store a list of points (and sometimes routes) with coordinates attached. The difference is who reads them well.
GPX (GPS Exchange Format) was built for GPS hardware and the apps that talk to it. It's the native format for Garmin devices, Gaia GPS, OnX, most geocaching apps, and the majority of offline hiking/overlanding tools. If your end destination is a handheld GPS unit or a GPS-first app, GPX is almost always the right call, it's lightweight, widely supported, and doesn't carry anything your device doesn't need.
KML (Keyhole Markup Language) was built for Google Earth, and it shows. It supports things GPX doesn't, custom icons, styling, folders, even embedded descriptions with HTML, because it was designed for visual map presentation, not GPS navigation. If you're loading pins into Google Earth, or into any tool that specifically asks for KML, that's the format to use.
Quick way to decide: if the app or device you're loading the file into is built for navigation and GPS tracking (Garmin, Gaia GPS, OnX, most Android/iOS trail apps), pick GPX. If it's built for map visualization (Google Earth, some GIS tools), pick KML. MapsLinkQuest exports both from the same source list, so you don't have to guess wrong and start over, pick the format that matches where the file is going.
Neither one is right if you're not loading the file into a GPS device or Google Earth at all. GeoJSON is what most GIS software and mapping libraries actually expect, use it for QGIS, a custom map, or anything a developer's building. CSV skips formats entirely, it's just names and coordinates in a spreadsheet, good for a plain list you want to sort, filter, or hand to someone with no GPS or GIS software at all. MapsLinkQuest exports all four (GPX, KML, GeoJSON, CSV) from the same source list.