A few things:
1) Don't use date_format in GROUP BY / ORDER BY clauses. Morever, GROUP BY does an implicit ORDER BY.
2) Because your where clause includes a reference to the left-joined table, you've effectively made this an inner join again. You need to add this condition to your on clause instead.
3) Haven't followed the whole thread, but you should really use proper date column types for all of your dates, not varchars.
So:
SELECT date_format( Transaction.Date, '%Y-%m-%d' ) AS 'Date', count( * ) AS 'Sales'
FROM ref_date
LEFT JOIN Transaction ON ( ref_date.Date = date_format( Transaction.Date, '%Y-%m-%d' ) AND Transaction.gigID = '1' )
GROUP BY Transaction.Date