When an implicit cast is unsafe (may cause loss of bits or precision), your compiler should warn you unless you have set too low a warning level. Alarmingly perhaps, in VC++ this means warning level 4 when the default is 3.
An explicit cast will suppress such warnings, it is a way of telling the compiler you are doing it intentionally. If you liberally apply casts without thinking you prevent the compiler from warning you when the potential loss of data or precision is not intentional.
If you have to cast, you should consider whether your data has the appropriate type to begin with. Sometimes you have no choice, or it is a convenient way of adapting to third-party code. In such cases an explanatory comment may be in order to make it clear that you really did think about it and not just habitually applying a cast.