<p>I'm new to Windows programming and after reading the Petzold book I wonder: </p>

<p>is it still good practice to use the <code>TCHAR</code> type and the <code>_T()</code> function to declare strings or if I should just use the <code>wchar_t</code> and <code>L""</code> strings in new code?</p>

<p>I will target only Windows 2000 and up and my code will be <a href="http://en.wikipedia.org/wiki/Internationalization_and_localization" rel="noreferrer">i18n</a> from the start up.</p>

Yes, absolutely; at least for the _T macro.  I'm not so sure about the wide-character stuff, though.
The reason being is to better support WinCE or other non-standard Windows platforms.  If you're 100% certain that your code will remain on NT, then you can probably just use regular C-string declarations.  However, it's best to tend towards the more flexible approach, as it's much easier to #define that macro away on a non-windows platform in comparison to going through thousands of lines of code and adding it everywhere in case you need to port some library to windows mobile.