I've always liked using enclosed models like the Grayhill 61K, 63K/R (
example) (spec sheet:
ShaftEncoder_128CountPerRev.pdf) .
A 63R is guaranteed for 10 years of continuous use at 5000rpm. We're still running them on a robot from 2004.
For drive train or shooter type applications look for encoders with a high rotational life, ball bearings, etc.
Lighter duty applications can use cheaper alternatives by using bearing sleeves, lower rpm ratings, etc.
Depending on the application you might consider absolute or incremental, quadrature, BCD, etc.
Both digital and analog models are easy to deal with and the FRC cRIO is setup to handle them. Other connection methods (I2C, SPI,) tend to cost more. PWM outputs don't really work with FRC without the added complication of custom circuit pre-processing.
Do be careful to match the counts-per-revolution to the application and the capabilities of the cRIO to handle the maximum counts-per-second you design for.