Weighted counting problems are a natural generalization of counting problems where a weight is associated with every computational path of polynomial-time non-deterministic Turing machines. The goal is to compute the sum of weights of all paths (instead of number of accepting paths). Useful properties and plenty of applications make them interesting. The definition captures even undecidable problems, but obtaining an exponentially small additive approximation is just as hard as solving conventional counting. We present a structured view by defining classes that depend on the functions that assign weights to paths and by showing their relationships and how they generalize counting problems. Weighted counting is flexible and allows us to cast a number of famous results of computational complexity, including quantum computation, probabilistic graphical models and stochastic combinatorial optimization. Using the weighted counting terminology, we are able to simplify and to answer some open questions.