indeed it would have been a lot easier if it was a point vs pie. but anyway, I just had a quick look into the problem and here's what I came up with:
Code:
TCircle = record
  public
    c: TG2Vec2;
    r: Single;
  end;

  TPie = record
  public
    c: TG2Vec2;
    r: Single;
    AngStart: Single;
    AngEnd: Single;
  end;
...
function CircleVsPieIntersect(const c: TCircle; const p: TPie): Boolean;
  var v1, v2, n1, n2, n3, a1, a2: TG2Vec2;
  var d1, d2, l: Single;
begin
  l := (c.c - p.c).Len;
  if l > c.r + p.r then
  begin
    Result := False;
    Exit;
  end;
  G2SinCos(p.AngStart, v1.y, v1.x);
  G2SinCos(p.AngEnd, v2.y, v2.x);
  n3 := -(v1 + v2);
  if (n3.Dot(c.c) > n3.Dot(p.c))
  and (l > c.r) then
  begin
    Result := False;
    Exit;
  end;
  n1 := v1.Perp; if n1.Dot(v1 - v2) < 0 then n1 := -n1;
  n2 := v2.Perp; if n2.Dot(v2 - v1) < 0 then n2 := -n2;
  d1 := n1.Dot(p.c) + c.r;
  d2 := n2.Dot(p.c) + c.r;
  if (n1.Dot(c.c) > d1)
  or (n2.Dot(c.c) > d2) then
  begin
    Result := False;
    Exit;
  end;
  a1 := p.c + v1 * p.r;
  a2 := p.c + v2 * p.r;
  if (
    (n1.Dot(c.c) > n1.Dot(p.c))
    and (v1.Dot(c.c) > v1.Dot(a1))
    and ((c.c - a1).Len > c.r)
  )
  or (
    (n2.Dot(c.c) > n2.Dot(p.c))
    and (v2.Dot(c.c) > v2.Dot(a2))
    and ((c.c - a2).Len > c.r)
  ) then
  begin
    Result := False;
    Exit;
  end;
  Result := True;
end;
this is not a best solution, just my solution
One limitation though, the algorithm will consider the pie to be the lesser part of the circle.
for example if the angle of your pie is > 180 then the algorithm will reverse the pie and use its smaller part.
so basically if you use a pie with an angle < 180, the algorithm will work.
There are a few methods from my game engine, so if you have any trouble understanding them - let me know.