Should I free/delete char* returned by getenv()?
No you shouldn't. Standard 7.20.4.5 says :
The getenv function returns a pointer to a string associated with the matched list member. The string pointed to shall not be modified by the program, but may be overwritten by a subsequent call to the getenv function.
I believe deletion is covered by the text in bold.
No. You don't control its storage. Typically, it's a pointer to a static array that is reused multiple times. For this reason, you should copy it if you plan to store it for later use (you should ensure this copy is freed properly).
Unless the documentation explicitly says you may free a pointer, you should not.