Does the code below give the logic you want. Notice that I changed your df data so that some zeros would be returned.
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
df <- data.frame("T1" = c(327,512,634),
"T2"= c(873,0,968),
"CT" = c(5,5,2))
df <- df %>% mutate(NewCol = ifelse(T2 !=0 & T2 >= 100 & CT >= 3 & T1/T2 > 0.05, 1, 0))
df
#> T1 T2 CT NewCol
#> 1 327 873 5 1
#> 2 512 0 5 0
#> 3 634 968 2 0
Created on 2021-04-19 by the reprex package (v0.3.0)