correctly, beef would by default be a section, unless it were a “leaf bundle”. Now a leaf bundle is described as
Since your beefdirectory does contain an index.md, it is a leaf bundle. Which in turn means that it is not a section.
That …/photos does “not work” may be, but since you do not say what “not work” means, it is difficult to judge. If I click on that link, I actually see an directory listing with “images” as its only content. That and your directory structure indicate that your images are in fact not in “photos” but in “photos/images”. So you should either move them to “photos” or adjust your links if (which you didn’t say, so I’m making an assumption here) you want the user to see actual images when they click on “photos”.
You do not have to duplicate your layout. First, you have to clean up your directory structure. Then you can set the desired layout in the frontmatter of your index.md (use the type parameter). This is explained in the documentation:
However, when jiggling between a section (_index.md) and “leaf bundle” (index.md) I again have become confused. First hugo serve has to be restarted when moving these around as it gives me misleading stale responses!
If you have: content/beef/_index.md the images need to be under /beef/ to be considered Page Resources belonging to /beef/_index.md.
The photos under /beef/photos/images belong to beef/photos/index.md.
content/chicken/index.md is a single page of type page, because you do not specify a type on the frontmatter. It is equivalent to content/chicken.md; i.e. it is not under a subfolder, which would have given it a non-default value for type. Therefore it uses the default single layout.
content/chicken/photos/index.md is a Page-type Page Resource belonging to content/chicken/index.md because content/chicken/index.md is a leaf node.
/beef/ is content/beef/_index.md; therefore it is a list, with type beef because you do not specify otherwise.
/beef/photos/ is content/beef/photos/index.md, which is a single, with type photos because you specify on its frontmatter.
Read point 4 in my response above.
Look at the lookup rules.
For /beef/_index.md:
Kind => {{ .Kind }} => `section`
Layout => not specified
Output Format => html
Language => n/a because not multilingual
Type => {{ .Type }} => beef
Section => {{ .Section }} => beef
RSS section posts
Section list for “posts” section
Section list for “posts” section with type set to “blog”
Section list for “posts” section with layout set to “demoLayout”
Clearly, the second, because you do not set the type; neither do you set the layout.
So now you have the possible places Hugo will check for a layout file. The most specific one wins; i.e. option 5 is more specific than option 12, so given both Hugo will pick option 5.
Obviously replace posts here with beef because that is the value of your Type / Section.