If I set my timezone in server and in Craft general settings, do I still need to change it in php.ini? And how does Craft handle timezone in those three places?
This is from the Craft Documentation about Date/Time Fields:
Note: Dates and times [...] are displayed in the site’s timezone, however they get stored in UTC like all other dates in Craft.
Additionally you can also use the
date filter, which allows you to specify a different timezone for the output (list of supported timezones). If you want to bind a timezone to a specific site locale (multi-lingual sites), there's a dedicated Q/A on how to do that.