There are two main types of palette swap for the GBA
1) Old SNES games that got ported for first gen GBAs.
2) Everything else, including GBA player custom stuff.
The GBA for many devs was something of a mini SNES. This extended as far as having the same palette format for several of the modes. However for reasons known only to Nintendo the first revision of the GBA had no lit screen and needed to be placed under blinding light to view it well. This meant many games, and at this point many ports, pumped the brightness of their palettes up a bit to help in this. Not great for emulator users, or the eventual later models with frontlit, backlit and straight TV out, indeed not great for people with reasonable lighting setups.
Simple solution then was fish the palette from the SNES ROM and then put it in the GBA ROM.
Everything else then. For some it will be similar -- find palette in game, extract into editor of your choice, put back into game (often with the button right next to the extraction one). It should also be noted you don't have to just edit palettes and can instead edit sprites to effect colour chances.
The basic method I usually start with is savestate analysis. As the palette is a custom affair then it necessarily has to be in memory, uncompressed and everything. Tile editors know this (I like tileed 2002 and can pull from it which can be enough for many sprite editing purposes.
Graphics can be compressed but as most palettes are only a few bytes they are rarely compressed. To that end you can search through the game for the palette dumped from memory/savestates and often find it in the game.
Troubles here. Dynamic palettes and palette animations. Summon Night 2 provides nice examples of both but for animations a simpler example can be found in Mr Driller 2 (the rainbow block, set a palette viewer in VBA to auto update and find a rainbow block in a level and it will all make sense). For these I tend to try fragments.
Back to Summon Night 2 then it has options in the menu to adjust colours (read brightness) for GBA, GBA SP/GB Micro and TV (GB player), animations can be seen in the save swords. Said dynamic adjustment has consequences for the method above. You can try a relative search if you want but eh, sometimes said adjustments will be a simple pointer switch (think how a game can have 5 languages onboard) and there will be three sets of each palette for each mode and it might be a combo of the two.
Finally you of course have tracing. If you can find the palette in RAM (like where the thing you want to edit is on screen) then you do something like https://www.romhacking.net/documents/361/
(but probably with no$gba debug these days now it is free).
If it is a compressed palette then you can try searching for fragments and hoping you get lucky (most compression does not encrypt files, though it can look like it at times), you will struggle to edit compressed files directly (you don't know if that sequence you just edited is used later in the compression) so decompress first to save headaches. There are a few types of compression on the GBA but most will be LZ, bit unpacking which is what gets called 1bbp mode in some tile editors but is technically compression (you tend to see this more in fonts for obvious reasons), and filtering where changes are noted rather than full numbers which makes compression easier. LZ has some telltale fingerprints so there are LZ searching tools... I am not going to say don't use such things but certainly don't rely upon them.
I have some pictures of some of this in http://www.romhacking.net/forum/index.php/topic,14708.0.html