You are right… we sometimes take the knowledge of formula notation from R (or Matlab) for granted. I think officially it is referred to as Wilkinson notation.
In GLM module, the input X is fully observed and noiseless. So you are correct that only the weights are latent variables. If you have other latent variables, using the native PyMC3 model language is probably easier.