How to Create a Separate Page for Blog Posts in WordPress

index.php is a template in the template hierarchy, as the fallback template for all requests, while blog.php is not in the hierarchy at all. So creating blog.php won’t do anything.

What you need to do is create a Page (in WordPress) called “Blog”, and a ‘Home’ page. Then in Settings > Reading, set “Front page displays” to “a static page”, then select the home page for the “Front page’ and “Blog” to the “Posts” page.

Refer to the template hierarchy I linked above to see which template file will actually get used for each page.