Either way is correct (assuming you do the manual coding properly), but there is a but. R supports several coding schemes (contrasts) for categorical variables. There is Dummy Coding, Deviation Coding, Helmert Coding, etc. What changes in each of these schemes is the meaning of intercept, and the interpretation of parameters. For instance, with dummy coding you compare all categories against a single base category, and the intercept is the mean for the base category (all other parameters being zero). With deviation coding, you intercept is the grand (!) mean, and your parameters are deviations from this grand mean. For example, if you are conducting country analysis, it is not always useful to compare every country against, say, France. Instead, you might want to compare each country to some mean, say, for the European Union.
This also goes for dichotomous variables. Do you want to compare men to women, or would you rather compare men to grand mean, and women to grand mean? Both are feasible, depending on your research context.
Now, when you use manual coding, you make no error. Yet you cannot quickly switch from one coding system to another, you'll have to recode everything manually again. For more complex coding systems you'll have some chance to make a mistake by doing it manually. And this may not matter much for dichotomous variables, but if you have more categories, creating dummies manually will clutter up your dataset and may result in confusion when you return to your analysis in a few months. Just a few arguments to use the automatic coding.
You can find additional information on coding systems in R here. It is a useful read and gives you more flexibility within the context of regression. Good luck!