Good references for stacks
Angelo Vistoli's notes on Grothendieck topologies, fibred categories and descent theory are probably not a bad place to start on technical details. The Stacks project has a guide to the literature. One can then move on to read the other chapters of the Stack project according to appetite...
A stack (without any modifier adjectives!) is essentially a sheaf of categories over a site, except that the sheaf condition has to be weakened to account for the fact that categories have two-dimensional structure. So, instead of having matching families of sections that can be amalgamated in a unique way, we have matching families of objects that can be amalgamated uniquely up to unique isomorphism, and once we fix the amalgamations of matching families of objects, matching families of morphisms can be amalgamated uniquely up to equality.
You probably don't know it, but you have already seen a few non-trivial examples of stacks: for example, Exercise 1.22 in Chapter II of [Hartshorne, Algebraic geometry] essentially asks you to prove that $\textbf{AbSh}(-)$ is a stack for the open immersion topology on the category of topological spaces. One of the fundamental results of descent theory is that $\textbf{Qcoh}(-)$ is a stack for the fpqc topology on the category of schemes.
Of course, this is probably not very exciting for a geometer. The starting point for the geometry of stacks is the functor-of-points viewpoint on schemes. It is not hard to show that the functor $\textbf{Sch} \to [\textbf{CRing}, \textbf{Set}]$ that sends a scheme to its functor-of-points is fully faithful – and another of the basic results of descent theory says that the functor-of-points of a scheme is a sheaf for the fpqc topology on $\textbf{Aff} = \textbf{CRing}^\textrm{op}$. From this point of view it is easy to say what a moduli space is: it is a scheme that whose functor-of-points is isomorphic to a certain functor $\textbf{CRing} \to \textbf{Set}$ of interest, typically one of the form $$R \mapsto \{ \text{isomorphism classes of certain $R$-schemes equipped with some data} \}$$ but this is somewhat unsatisfactory, as it fails to capture the isomorphisms of the structures that it classifies.
So what do we do? First, we have to replace functors $\textbf{CRing} \to \textbf{Set}$ with something more general – in this instance, we want to look at pseudofunctors $\textbf{CRing} \to \mathfrak{Grpd}$, because what we are really interested is the groupoid of certain structures over each ring $R$. Every set determines a unique discrete groupoid, so this subsumes the previous notion. We can then pull the French trick of turning a theorem into a definition – and so we define moduli stacks to be the pseudofunctors of interest. The problem now is to find (re)presentations for these pseudofunctors, and this is where things like algebraic stacks make their appearance.
Why do we need to generalise schemes at all? Well, it is obvious that a groupoid is equivalent to a set if and only if every (iso)morphism in the groupoid can be uniquely labelled by its domain and its codomain. (Such a groupoid is often called a setoid.) This means a scheme cannot possibly represent the moduli stack of structures with non-trivial automorphisms, e.g. families of elliptic curves. So we have to look elsewhere for representations.
Here is one way of thinking about algebraic stacks – and this sets up the connection with orbifolds. A non-trivial fact about stacks of groupoids is that the quotient of a stack of setoids by an internal groupoid action is in general a stack of groupoids, but not necessarily a stack of setoids. It turns out that every algebraic stack is the quotient of a stack of setoids represented by an algebraic space in this way, and we can think of algebraic stack as being a "formal" quotient of a (smooth) groupoid object in the category of algebraic spaces.