If the compiler doesn't complain - no difference.
Not really important, just the 'true' seems to be a 1-byte boolean constant, while TRUE and True are 4-byte integer constants of value 1.
(Massively pedantic answer...
Yes, it's MT4 inheriting from Windows, which in turn is reflecting the historic differences between C and C++. C has - strictly, had - no boolean data type and no "true" constant. Therefore, the Windows API fills the gap by defining a BOOL, which is simply "typedef int BOOL", and by defining the constant TRUE, which is simply "#define TRUE 1". C++ does have a bool data type, and does have a "true" constant. MQL4 inherits these two separate things. This has been tidied up in MQL5, which only has "true", and doesn't have "TRUE" or "True".)
MQL4 is loosely based on C++ which has always had a bool type.
ANSI C did not have a bool until 1999. The current ANSI standard is C11 (2011)
Many compilers did not implement all the C99 features and so C90 may still be the most portable version
Yes, that is indeed what I meant by "C has - strictly, had - no boolean data type". From Windows's point of view, C doesn't have a bool because the core of the Windows API predates 1999.
Seems like Microsoft finally implemented the bool type in their C compiler with the release of Visual Studio 2013...
Windows API obviously continues to use its own definition of BOOL; too late to change that.
Digressing almost completely, my favourite Windows->MQL4 legacy is one I've mentioned a couple of times before on this forum...
Question: why isn't is possible for an indicator or a line object in MT4 to be dashed, dotted etc if it is more than 1 pixel wide? Answer: it's almost certainly inheriting the limitations of the Windows CreatePen() function. That dates back at least to 1995, and may well derive from Windows 3, or even beyond - I can no longer remember.