SQL Server objects i.e. tables and indexes have their own namespaces. So it is possible to have the same name for index and table(but it's not a common/good practice):
CREATE TABLE t(id INT PRIMARY KEY, col INT);
CREATE INDEX t ON t(col);
SELECT * FROM sys.tables WHERE name = 't';
SELECT * FROM sys.indexes WHERE name = 't';
Unfortunately I am not able to create the same construct using inline index definition:
CREATE TABLE t(id INT PRIMARY KEY, col INT, INDEX t(col));
Msg 2714 Level 16 State 5 Line 1
There is already an object named 't' in the database.
-- below code is working correctly
CREATE TABLE t(id INT PRIMARY KEY, col INT, INDEX t1(col));
Do I miss something obvious or is it a bug?