I have a subsites inside a site collection. There I have defined some custom content types. Once I deleted the subsite, and created a new subsite with the same name and url, I can see all the old content types already there. Is this a normal behavior? How can I deleted it completely?
This is correct behavior. Columns are defined at the site collection level or list level so deleting a subsite will not delete them unless they were defined as list columns.
You need to go to site settings on the parent site collection --> Site columns and then delete them from there.