My project is set in WGS84 only, and I have checked 'enable on the fly'. I have created a polygon shapefile and my problem is that when i use field calculator in the attribute table on my polygon shapefile (settings are absolutely identical as above) I use the geometry: $area to create a column for area_m2 but all I get is 0, Where the other column I have made has values for perimeter. Any ideas?
$area is calculated in the layers units, that is square degrees in your case. If you want square meters, you have to reproject your layer into a new file and with a projected CRS that uses meters as units.
After calculating the area in meters and adding it to your attribute table, you can reproject back to degrees. The attribute table value will not change.