As we know in 450k data analysis, probes with p-value> 0.01 must be removed but in minfi package it suggests to remove probes with p-value>0.01 in more than 50% of samples, in Champ package it automatically removes probes with p-value>0.01 and in some other analysis remove probes with p-value >0.01 in 20% of samples . Which one is correct?
There's two things to consider here: filtering probes and filtering samples.
High detection p-value generally indicates a poor quality signal.
You can remove samples with a detection p-value above a certain number (e.g. >0.05 or 0.01) which refers to the mean (or sometimes median) detection p-value across all the probes. The same can be done for the mean/median p-value of individual probes across all samples. This is what you are referring to where the champ package automatically removes probes >0.01
However it is also quite common to remove probes if they fail (high detection p-value) in a proportion of samples or if a sample contains a high proportion of failed probes, as mentioned in your question. Presumably this is because their average p-value may still be below a certain threshold whilst still having a relatively high proportion of failed probes or probes failing in a large number of samples...
Annoyingly, the ways this is done varies slightly between the packages and you will have to decide for yourself how you want to filter your data depending on your research question. I think it is a good idea to do both - remove probes and samples based on average detection p-value but also based on proportion of failed probes and samples as described above. the thing you need to do is decide where to set your cutoffs. Because there are so many probes, I think erring on the side of caution is sensible. Champ.filter() is pretty comprehensive and has many ways to filter your probes with default cutoffs that are probably fine. You can always go back and change this if your data is noisy.
note: minfi and champ can also remove probes associated with common SNPs, which is a good idea, but these are different between the packages so I would recommend doing both to be stringent.
Hope this helps