Why pandas has its own datetime object Timestamp?
You can go through Pandas documentation for the details:

"pandas.Timestamp" is a replacement for python datetime.datetime for
  Padas usage.
Timestamp is the pandas equivalent of python’s Datetime and is
  interchangeable with it in most cases. It’s the type used for the
  entries that make up a DatetimeIndex, and other timeseries oriented
  data structures in pandas.
Notes
There are essentially three calling conventions for the constructor.
  The primary form accepts four parameters. They can be passed by
  position or keyword.
The other two forms mimic the parameters from datetime.datetime. They
  can be passed by either position or keyword, but not both mixed
  together.
Timedeltas are differences in times, expressed in difference units,
  e.g. days, hours, minutes, seconds. They can be both positive and
  negative.
Timedelta is a subclass of datetime.timedelta, and behaves in a
  similar manner, but allows compatibility with np.timedelta64 types
  as well as a host of custom representation, parsing, and attributes.

I would say as pandas works better with Time Series data hence its been a kind of warper on the original built-in datetime module.

The weaknesses of Python's datetime format inspired the NumPy team to
  add a set of native time series data type to NumPy. The datetime64
  dtype encodes dates as 64-bit integers, and thus allows arrays of
  dates to be represented very compactly.
The documentation of pandas.Timestamp states a concept well-known to every pandas user:

Timestamp is the pandas equivalent of python’s Datetime and is interchangeable with it in most cases.

But I don't understand why are pandas.Timestamps needed at all.
Why is, or was, it useful to have a different object than python's Datetime? Wouldn't it be cleaner to simply build pandas.DatetimeIndex out of Datetimes?