I learned the following perspective in part from Bill Doran.
Redefine a partition through its boundary, extended along the axes in both directions:
A partition is a bi-infinite sequence of vertical $(0,1)$ and horizontal $(1,0)$ steps $(... S_{-2},S_{-1},S_0,S_1,S_2,...)$ whose prefix is all vertical steps, and whose suffix is all horizontal steps. A square of the partition is a pair of steps so that the first step is horizontal and the second step is vertical. The hook length of that square is the distance between the steps.
Then the $p$-quotient of a partition is the $p$-tuple of partitions you get by the steps in each congruence class mod $p$: $P_i = (...S_{-2p+i},S_{-p+i},S_i,S_{p+i},S_{2p+i},...)$ for $i \in \{0,..., p-1\}$.
Each square of a partition of the $p$-quotient corresponds to a square of the original partition whose hook length is divisible by $p$.
$p$-cores are partitions whose $p$-quotient is a $p$-tuple of empty partitions. They can be parametrized by an equivalence class of $p$-tuples of values $k_i$ so that $S_{p k + i}$ is vertical iff $k \le k_i$, i.e., the offsets of the empty partitions.
If you strip $p$-rimhook after $p$-rimhook off of a partition, this always results in the same $p$-core, and the choices don't matter. The choices correspond to taking one corner square (hook length 1) at a time off of a partition in the $p$-quotient.
Although in some applications, $p$ is prime, that is not necessary.