We use int for the normal dates in the database instead of datetime because it is easier to make operations (for statistics, reports, filters, etc) on the columns and it is simpler to handle timezones.
We use a "text" format for the custom fields as you want the data to be readable even if you change the type of the custom field or when you export the data, and there is still no problem with timezones, and on top of that, you can have dates older than 1970 which is handy for birthday custom fields which wouldn't be possible with a timestamp...
There are different formats for everything because they solve different things. For example for the images:
JPG is compressed (small file size) so it's great for photos with a lot of pixels
PNG is not compressed (bigger file size) so it's great for icons, small images where you don't want to loose any detail. It also supports transparency
GIF is great for small images, animations because it is limited in the number of colors, but can support several frames played one after another.
Each format was made for a different purposes.
More information on SQL date formats:
stackoverflow.com/questions/409286/datetime-vs-timestamp
code.openark.org/blog/mysql/timestamp-vs...ch-should-i-be-using