I read many posts, it seems the "BH" is used for "FDR", but why in the function "BH" and "fdr" are two independent methods?
Another question is can I understand "holm", "hochberg", "hommel", "bonferroni", "BH", "BY", are used for adjusted p value, and "fdr" is used for false discovery rate? What is the difference between adjusted p value and fdr?
"BH" and "fdr" are the same method. The p.adjust help page (that you've linked to) says that "fdr" is merely an alias for "BH".
"BH", "BY" and "fdr" all produce false discovery rates, again as explained by the help page.
A little history
Originally, p.adjust() didn't have any FDR methods. Then Benjamini and Hochberg's method was added. At that time, Benjamini and Hochberg's method was the only FDR method, so it was just called "fdr". Later on, we added the Benjamini & Yekutieli's method as well, so we needed new names. We called the new method "BY" and renamed the old method to "BH". The old name "fdr" was also kept as well, just for backward compatibility, which is how we ended up with two names for the same thing.