RNA-Seq: clustering/treatment of genes with low expression
rlog(normalized counts) is going to be more robust than log2(TPM), so use it instead.
Do it afterward, keeping the low counts can be helpful for library-size normalization.
This is very much more of an art than a science, though have a look at the kOverA() function from the genefilter package. That will give you a bit more fine-grained control on filtering.
You'd be better off using something like zFPKMs if you want to filter by "expressed or not", since there's no really great definition of that.