Go to View -> Name Finder in TimeQuest and you can play with these.
Cell is a physical thing in the device, like a LUT, FF, PLL, memory slice, etc.
Pin is the connection on these cells, so it doesn't relate directly to your hdl. A FF will have pins like |clk, |d, |q. A LUT will usually have |combout.
Keepers are timing endpoints. Mainly FFs and Ports. RAMs you can write to asynchronously(old LUTRAMs) could be them.
Registers are just a subset of the keepers.
Personally, I use keepers for my -from/-to options if I want a specific path, and clocks if I want to modify a whole domain. The only time I use -pin is with the -through option, such as going through a particular LUT, or to make generated clock assignments on gated clocks(such as the |combout of the mux done in logic). I use ports for I/O constraints.
The -from and -to must be endpoints of the path of clock domains. I almost exclusively use those, and often only one(in which case the other defaults to "everything"). I very seldom use -through except occasionally in report_timing. I've never seen the need for two options for -through, so you may have a unique case.
Doesn't answer everything but hope it helps.