Deciding if there is a graph homomorphism is easier than counting the number of (weighted) graph homomorphisms.
For undirected target graphs $H$ (i.e. the number of weighted graph homomorphisms from an input graph $G$ to $H$), there is a dichotomy theorem.
Jin-Yi Cai, Xi Chen, Pinyan Lu. Graph Homomorphisms with Complex Values: A Dichotomy Theorem.
That is, every target graph $H$ either defines a #P-hard or polynomial time computable counting problem (see Theorem 1.1).
It is a bit difficult to explain which graphs $H$ define polynomial computable problems (see Theorem 5.7 for the statement and page 4 for the index of the conditions), but it is also polynomial time computable to decided if a target graph $H$ defines a easy problem (see Theorem 1.2).
The tractability follows from the ability to efficiently compute the exponential sum over a sequence of variables modulo $q$ that form a quadratic polynomial in the exponent of a $q$th root of unity, where $q$ is a prime power (see the beginning of section 12).
The unweighted case is much simpler. Below, I state Theorem 1.1 from the following paper.
Martin Dyer, Catherine Greehill. The complexity of counting graph homomorphisms. (Also this direct link to a free PDF.)
Let $H$ be a fixed graph. Then problem of counting $H$-colourings of graphs is #P-complete if $H$ has a connected component which is not a complete graph with all loops present or a complete bipartite graph with no loops present. Otherwise, the counting problem is in P.