It's all context related I believe.
If a user is on some site and they created a new article named "Article1" and they never typed in anything other than the name then deleting it should be EASY. No need to confirm anything.
If the user created Article2 and type in some text and added some tags....then this would need confirmation because it risks losing important user data.
If your application has an "activity log" that the user can look at and use to "undo" actions then deletion confirmation might not be necessary. If they wanted to undo the delete they could undo it themselves.
Github does the "type the name of the project to delete" because a user better be darn sure about deletion and what they want to delete. It might've taken days to code the project or files, etc.
I think you should decide based on the sensitivity of the data ( like in the Article examples above ) as well as the undo/redo functionality you add to your application.
In some cases you might even DISALLOW deletion altogether because other items in the system reference the item you want to delete. In that case you would point out the dependencies to the user so they can decide if they want to go and delete those.