If $B$ is empty, just pick a single circle. Otherwise, here's a way to turn this continuous problem into a discrete (but still probably hard) problem:
Lemma: There exists an optimal solution in which every circle falls into one of the following cases:
- It has diameter zero and is centred on an $A$-point.
- It has at least 2 $A$-points on its boundary, and some $B$-point a very small distance $\epsilon > 0$ from its boundary.
- It has at least 3 $A$-points on its boundary.
Proof sketch: Suppose we have an optimal solution. For any circle with no $A$-points on its boundary, shrink it (keeping the centre in the same position) until it does: Notice that shrinking never causes a point that was outside the circle to move inside it, so this never causes a $B$-point to become covered. Do this for all circles, until all circles have at least one $A$-point on their boundary. If that is the only $A$-point in the circle, shrink that circle all the way down to diameter 0 and centre it at that point.
Second, for any circle that has only one $A$-point on its boundary but at least one other $A$-point inside it, "pull-shrink" it towards the boundary point until at least one more $A$-point lies on its boundary. By "pull-shrink" I mean: Keep that boundary $A$-point on the boundary, and move the circle centre some distance $x$ along the straight line towards it, thereby also reducing the circle's radius by $x$. Pull-shrinking also never causes a point that was outside the circle to move inside it. Think of lying a cylinder on the ground so that it could roll, and putting a smaller-diameter cylinder inside it: the smaller cylinder lies completely inside the larger one, touching it only at the very bottom point.
Finally, "puff out" each circle until either an $A$-point inside it almost escapes (lies on the boundary), or a $B$-point outside it almost touches the boundary, whichever happens first. By "puff out" I mean: Keep the 2 boundary $A$-points on the boundary, and move the circle centre away from them along their perpendicular bisector, causing it to enlarge. Unlike shrinking and pull-shrinking, puffing out can cause points that were inside the circle to move outside, and vice versa. That's why we need a more flexible stopping condition. (For this process to terminate, it may actually be necessary to move the circle centre in the opposite direction, which initially shrinks it: This is necessary if there are no $B$-points in the half-plane defined by the line connecting the two boundary $A$-points and containing the circle centre. Since we have assumed $|B| \ge 1$, at least one of the two half-planes contains a $B$-point, so at least one of the two movement directions will cause the circle to eventually get within $\epsilon$ of a $B$-point, which is all that matters for this proof.)
Starting from an arbitrary optimal solution, after performing these steps, we have constructed a same-size (i.e., optimal) solution that still covers all $A$-points, avoids all $B$-points, and in which each circle either has diameter zero, or has at least 2 $A$-points on its boundary, in addition to either a third boundary $A$-point or a $B$-point just outside its boundary. What this means is that it suffices to consider only solutions in which each circle has this property.
Since any 3 non-collinear points lie on the boundary of exactly 1 circle, we need only consider a finite-size set of circles to choose from:
- The $|A|$ diameter-0 circles centred on $A$-points.
- The at most $|B|{|A| \choose 2}$ circles formed by choosing any 2 $A$-points and any $B$-point, which are not collinear, to lie on its boundary, excluding those that contain a $B$-point.
- The at most $|A| \choose 3$ circles formed by choosing any 3 non-collinear $A$-points to lie on its boundary, excluding those that contain a $B$-point.
Of course, you can also get rid of any circle whose $A$-points are completely contained by some other valid circle, and doing so should speed things up.
To solve the problem, generate these $O(n^3)$ circles and solve a Set Cover problem in which the set of items to be covered is $A$, and each circle contributes a set, namely the set of $A$-points that it covers.
It may be that the Euclidean structure in the problem means that some asymptotically faster algorithm can be used than a general Set Cover solver.