I'm working on a toy model for a supernova explosion.
The model is that there is a hot circular region at the north pole of an opaque sphere (with the circle centred on the pole).
The sphere has radius R and the circle radius r.
The sphere itself always fills $\pi R^2$
If you look directly down from N, the disc fills an area of $\pi r^2$
If you look from S, the sphere blocks the disc so it fills 0 area.
How do I work out how much projected area the disc fills for the angles in between?



I assume you are talking about the orthogonal projection. Let's denote the viewing angle from north pole as $\psi=0$ and from south pole as $\psi=\pi$.
If $\psi\le\pi/2$, sphere doesn't block the disk and we want to calculate only the projection area of a disk. In that case one axis of the ellipse will still be $r$ and another one will become $r\cos\psi$, so the total area is $A_e=\pi r^2\cos\psi$.
When$\psi>\pi/2$, sphere will block the disk, so we want to calculate the area of difference between the projection of a disk (ellipse $e$) and a projection of a sphere (circle $$c). This difference is $A_d=A_e-A_i$, where $A_i$ is the area of intersection of circle and disk. One can derive a formula for the later problem, which is complicated. And if you want one, please refer to this. The parameters (centre coordinates, radius/radii) of the circle are$(0,0), R$, the parameters of the ellipse are $(R\sin\psi,0), (r\cos\psi,r)$.
However there is a simpler solution if you are ok with a good estimate. You can generate slanted rays for many points of the disk and check, whether they are blocked by the sphere. For a point $\pmb p =(x_0,y_0,R)$ and the ray vector $\pmb n =(\sin\psi,0,\cos\psi)$, the distance to point $(0,0,0)$ is given by: $$ d^2 = |\pmb p - (\pmb p\cdot\pmb n)\pmb n|^2 = (x_0\cos\psi-R\sin\psi)^2+y_0^2. $$ You just need to calculate the fraction of rays for which $d^2>R^2$ and multiply it by the area of the ellipse $\pi r^2\cos\psi$. Just be sure to precompute the values for $\cos\psi$ and $\sin\psi$ before the loop, so the only calculations inside the loop are simple additions and multiplications.