5 main methods
1,2 and 3 are rudolph's rom dumping tools. They have a secondary option to dump saves.
1) Needs a DLDI capable GBA slot cart like the EZ4, supercards, m3 and whatever else. Several other apps with the same save functionality (dumping is a different matter) exist.
2) Needs a EZ 3 in 1. Same idea as above but uses the NOR or a 3 in 1. If you have some really old GBA slot flash cart hardware then some apps exist that use the SRAM of a cart instead.
3) Uses wifi and you need to set up an FTP server on your machine. It is however quite fussy about what FTP server app you can use.
You can grab any of these apps from the downloads section.
4) You also have things like savsender that also uses wifi but instead of FTP they have their own psuedo custom protocols.
http://wiki.pocketheaven.com/SavSender is a good start and I think there are a few guides and posts with frontends around here as well.
5) For saves I have vague memories of an app you could swap DS carts over with for but the name escapes me right now and it probably would not work with most carts.
The easiest way without doubt is 1) but it seems not many have such hardware these days.