Buffering in meters/km using WGS84 layers using QGIS

For this application, I would use an Azimuthal Equidistant projection centered in the middle of your source points. This projection has the nice feature of all radial distances around the center of the projection being accurate.

That particular projection is not part of QGIS standard projections. You can define your own using Settings/Custom CRS with the command string +proj=aeqd +lat_0=24.5 +lon_0=121.5, but unfortunately, custom projections can't be used by the fTools Reprojection tool. Instead, you can transform your dataset on the command line using the command

ogr2ogr points_reprojected.shp points.shp -t_srs "+proj=aeqd +lat_0=24.5 +lon_0=121.5"

Then you can do the buffering in QGIS using the points_reprojected.shp shapefile.

A 2000km buffer around a point in north Taiwan looks like a circle in an orthographic projection centered on the point:

... and squashed in WGS84: