Numerical weather forecasting - resources for a programmer?
The resources you want will vary on what level of understanding you are seeking.  For example, knowing the math means you can solve equations or transform them, but it doesn't mean you understand the physics involved. 

Some topics you'll want an understanding of to understand the process:


Physics

At the heart of any weather model are our primitive equations.  Navier-stokes, thermodynamic energy, the state equation, and mass continuity. 
Differential equations, linear algebra

The math for solving the above equations.
Discretization, numerical stability

How to turn the equations into something than be numerically solved on a 3D grid of points discrete in space and time.  This also involves choices in grid types, grid resolution, boundary conditions and time steps.  Any numeric noise must be accounted for and some artificial diffusion is sometimes used to accomplish this.  
Sub-gridscale physics

A consequence of a grid means that processes smaller than about 4x your grid spacing and certainly those entirely contained within a grid volume are not resolvable by the physics in your equations.  These physics must be parameterized.  These process can include convection, radiation, turbulence, moisture, boundary layer processes and more.


Some books that may assist you include:


Numerical Methods for Fluid Dynamics (Durran, 2010) (finite difference methods, time stepping schemes, numerical methods)
Numerical Recipes (implementations of numerical methods)
Paramaterization schemes (Stenstrud 2009) (how to represent sub-gridscale physics in your model)
Modern Fortran Explained (Metcalf, Cohen and Reid, 2011) (in the world of models you will be seeing a lot of Fortran and FORTRAN).
A good text on MPI (not necessarily needed to understand the model, but if you are interested in how it runs across nodes you'll want to understand MPI).


The next step is digging into the source code.  From this perspective I suggest taking a look at CM1, which may be easier to follow than WRF from a programming perspective and will give you a foundation for how the math is applied in code to solve our equations and produce the output you see.